valor Unicode \ uXXXX a este personaje en Javascript
-
26-09-2019 - |
Pregunta
Nunca he hecho esto antes y no estoy seguro de por qué está dando salida a la infame �
codificación de caracteres. Cualquier ideas sobre cómo caracteres de salida como deberían (ASCII + Unicode)? Creo \u0041
-\u005A
debe imprimir A-Z
en UTF-8, que Firefox es la presentación de informes es la codificación de página.
var c = new Array("F","E","D","C","B","A",9,8,7,6,5,4,3,2,1,0);
var n = 0;
var d = "";
var o = "";
for (var i=16;i--;){
for (var j=16;j--;){
for (var k=16;k--;){
for (var l=16;l--;){
d = c[i].toString()
+ c[j].toString()
+ c[k].toString()
+ c[l].toString();
o += ( ++n + ": "
+ d + " = "
+ String.fromCharCode("\\u" + d)
+ "\n<br />" );
if(n>=500){i=j=k=l=0;} // stop early
}
}
}
}
document.write(o);
Solución
La función .fromCharCode()
lleva un número, no una cadena. No se puede poner juntos una cadena así y esperar que el analizador para hacer lo que crees que va a hacer; eso no es la forma en que funciona el lenguaje.
Se podría enmendar su código para hacer una cadena (sin el '\ u') de su número hexadecimal, y la llamada
var n = parseInt(hexString, 16);
para obtener el valor. Posteriormente, se podría llamar .fromCharCode()
con que valor.
Otros consejos
Un fragmento útil para la sustitución de todos los caracteres especiales Unicode codificada en un texto es:
var rawText = unicodeEncodedText.replace(
/\\u([0-9a-f]{4})/g,
function (whole, group1) {
return String.fromCharCode(parseInt(group1, 16));
}
);
Uso replace
, fromCharCode
y parseInt
Si desea utilizar la sintaxis \unnnn
para crear personajes, lo que tiene que hacer eso en una cadena literal en el código. Si desea hacerlo de forma dinámica, hay que hacerlo de una cadena literal que se evalúa en tiempo de ejecución:
var hex = "0123456789ABCDEF";
var s = "";
for (var i = 65; i <= 90; i++) {
var hi = i >> 4;
var lo = i % 16;
var code = "'\\u00" + hex[hi] + hex[lo] + "'";
var char = eval(code);
s += char;
}
document.write(s);
Por supuesto, sólo usando String.fromCharCode(i)
sería mucho más fácil ...