Unicode ist einer der Standards für die Zeichenkodierung in der Informatik. Er definiert eine Möglichkeit, Zeichen numerisch darzustellen. In Unicode hat jedes Zeichen eine entsprechende Zahl. Diese Zahl wird als Unicode-Codepunkt bezeichnet und normalerweise hexadezimal ausgedrückt.
Wenn wir in JavaScript Unicode-Codepunkte verwenden müssen, um einige Sonderzeichen darzustellen, drücken wir diese normalerweise in der Form uXXXX
aus. Unter diesen ist XXXX eine vierstellige Hexadezimalzahl, die den Unicode-Codepunkt des entsprechenden Zeichens darstellt. uXXXX
的形式。其中,XXXX 是一个 4 位的 16 进制数,表示对应字符的 Unicode 码点。
如果我们有一串字符串,而其中包含了一些特殊字符,我们可以将这些字符转换为对应的 Unicode 码点。JavaScript 中提供了一些内置方法来完成这个任务。
String.charCodeAt() 方法可以返回字符串中指定位置的字符的 Unicode 码点。例如:
let str = "hello world"; console.log(str.charCodeAt(0)); // 104,h 的 Unicode 码点是 104
我们可以使用一个循环将整个字符串遍历一遍,并将每一个字符的 Unicode 码点转换为 uXXXX
的形式。例如:
let str = "hello world"; let unicodeStr = ""; for (let i = 0; i < str.length; i++) { // 将每一个字符的 Unicode 码点转换为 4 位的 16 进制数,然后补 0,最后拼接到结果字符串中 unicodeStr += "\u" + ("0000" + str.charCodeAt(i).toString(16)).slice(-4); } console.log(unicodeStr); // u0068u0065u006cu006cu006fu0020u0077u006fu0072u006cu0064
String.codePointAt() 方法可以返回字符串中指定位置的字符的 Unicode 码点,与 String.charCodeAt() 不同的是,它可以正确处理大于 16 位的 Unicode 码点。例如:
let str = "?"; console.log(str.charCodeAt(0)); // 55362,这个码点需要使用 2 个 16 进制数表示,而 charCodeAt() 返回的是第一个 16 进制数的码点 console.log(str.codePointAt(0)); // 134071,codePointAt() 返回整个码点
使用 String.codePointAt() 方法转换字符串中所有的字符为 Unicode 码点,则可以按照类似上面的方式进行遍历:
let str = "hello ??? world"; let unicodeStr = ""; for (let i = 0; i < str.length; i++) { let codePoint = str.codePointAt(i); // 如果该字符是大于 16 位的 Unicode 码点,则需要分组转换 if (codePoint > 0xffff) { i++; // 需要跳过下一个位置 // 将码点的高 16 位和低 16 位分别转换为 4 位的 16 进制,然后拼接到结果字符串中 unicodeStr += "\u" + ("0000" + (codePoint >> 16).toString(16)).slice(-4) + "\u" + ("0000" + (codePoint & 0xffff).toString(16)).slice(-4); } else { // 将码点转换为 4 位的 16 进制数,然后补 0,最后拼接到结果字符串中 unicodeStr += "\u" + ("0000" + codePoint.toString(16)).slice(-4); } } console.log(unicodeStr); // u0068u0065u006cu006cu006fu0020ud842udfb7ud842udfb7ud842udfb7u0020u0077u006fu0072u006cu0064
上面的代码中,我们首先判断当前字符的码点是否大于 16 位,如果是,则需要将其高 16 位和低 16 位分别进行转换,然后拼接到结果字符串中。如果不大于 16 位,则直接将其转换为 4 位的 16 进制数,然后拼接到结果字符串中。
总结来说,JavaScript 中可以使用 String.charCodeAt() 和 String.codePointAt() 方法来将字符串中的字符转换为 Unicode 码点,并使用 uXXXX
uXXXX
umzuwandeln. Beispiel: 🎜rrreeeuXXXX
darzustellen. Wenn die Zeichenfolge Unicode-Codepunkte enthält, die größer als 16 Bit sind, müssen Sie die Methode String.codePointAt() verwenden, um die oberen 16 Bits und die unteren 16 Bits in 4-stellige Hexadezimalzahlen umzuwandeln. 🎜Das obige ist der detaillierte Inhalt vonJavascript-String in uxxxx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!