41 votes

Comment puis-je convertir une chaîne en un caractère Unicode ?

En Javascript, '\uXXXX' renvoie un caractère unicode. Mais comment puis-je obtenir un caractère unicode lorsque la partie XXXX est une variable ?

Par example:

 var input = '2122';
console.log('\\u' + input);             // returns a string: "\u2122"
console.log(new String('\\u' + input)); // returns a string: "\u2122"

La seule façon à laquelle je pense pour le faire fonctionner, c'est d'utiliser eval ; pourtant j'espère qu'il y a une meilleure solution:

 var input = '2122';
var char = '\\u' + input;
console.log(eval("'" + char + "'"));    // returns a character: "™"

37voto

Digital Plane Points 11741

Utilisez String.fromCharCode() comme ceci : String.fromCharCode(parseInt(input,16)) . Lorsque vous mettez une valeur Unicode dans une chaîne en utilisant \u , elle est interprétée comme une valeur hexadécimale, vous devez donc spécifier la base (16) lorsque vous utilisez parseInt .

18voto

Raynos Points 82706

String.fromCharCode("0x" + input)

ou

String.fromCharCode(parseInt(input, 16)) car ce sont des nombres 16 bits (UTF-16)

11voto

Mathias Bynens Points 41065

JavaScript utilise UCS-2 en interne.

Ainsi, String.fromCharCode(codePoint) ne fonctionnera pas pour les caractères Unicode supplémentaires. Si codePoint est 119558 ( 0x1D306 , pour le '

1voto

Sonny Piers Points 201
var hex = '2122';
var char = unescape('%u' + hex);

console.log(char);

retournera " ™ "

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X