2009-01-21 13 views
34

No estoy tan familiarizado con Javascript, y estoy buscando la función que devuelve el valor UNICODE de un carácter, y dado el valor UNICODE, devuelve el equivalente de cadena. Estoy seguro de que hay algo simple, pero no lo veo.¿Cuál es una manera fácil de llamar a Asc() y Chr() en JavaScript para valores Unicode?

Ejemplo:

  • ASC ("A") = 65
  • CHR (65) = "A"
  • ASC ("ਔ") = 2,580
  • CHR (2580) = "ਔ"
+3

Bueno, no habría asc() pero unicolor(). Ja, ja, estoy en buena forma esta mañana :-). – paxdiablo

Respuesta

54

Tenga una mirada en:

String.fromCharCode(64) 

y

String.charCodeAt(0) 

La primera se debe llamar a la clase String (literalmente String.fromCharCode...) y volverá "@" (64). El segundo se debe ejecutar en una secuencia instancia (por ejemplo, "@@@".charCodeAt...) y devuelve el código Unicode del primer carácter (el '0' es una posición dentro de la cadena, puede obtener los códigos para otros caracteres en la cadena cambiando eso a otro número).

El fragmento de secuencia de comandos:

document.write("Unicode for character ਔ is: " + "ਔ".charCodeAt(0) + "<br />"); 
document.write("Character 2580 is " + String.fromCharCode(2580) + "<br />"); 

da:

 
Unicode for character ਔ is: 2580 
Character 2580 is ਔ 
+0

¡Gracias, esa es exactamente la función que estaba buscando! – Noah

4

Debido JavaScript uses UCS-2 internally, String.fromCharCode(codePoint) no funcionará para caracteres Unicode suplementarios. Si codePoint es 119558 (0x1D306, para el carácter ''), por ejemplo.

Si desea crear una cadena basada en un punto de código no BMP Unicode, se puede usar Punycode.js 's funciones de utilidad para convertir entre UCS-2 cuerdas y UTF-16 puntos de código:

// `String.fromCharCode` replacement that doesn’t make you enter the surrogate halves separately 
punycode.ucs2.encode([0x1d306]); // '' 
punycode.ucs2.encode([119558]); // '' 
punycode.ucs2.encode([97, 98, 99]); // 'abc' 

si desea obtener el punto de código Unicode para cada carácter de una cadena, deberá convertir la cadena UCS-2 en una matriz de puntos de código UTF-16 (donde cada par suplente forma un único punto de código). Usted podría utilizar las funciones de utilidad Punycode.js ‘s para esto:

punycode.ucs2.decode('abc'); // [97, 98, 99] 
punycode.ucs2.decode(''); // [119558] 
+0

En realidad, Javascript usa la codificación UTF-16. Si pones más que el BMP en él y lo lees obtendrás exactamente lo mismo que lo pones. Aunque no estarás escribiendo un procesador de texto en él. – Chad

+1

@Chad ¿Has leído el artículo al que me he vinculado? Supongo que no. –

+0

Leo su artículo, y depende del navegador. Por lo tanto, si introduce la codificación UTF-16 en v8 Chrome JavaScript, obtendrá exactamente los puntos del código Unicode. La representación de tales puntos de código es una historia diferente. – Chad

0

Ejemplo para generar gama alfabeto aquí:

const arr = []; 
for(var i = 0; i< 20; i++) { 
    arr.push(String.fromCharCode('A'.charCodeAt(0) + i)) 
} 
Cuestiones relacionadas