我正在尝试创建一个像const str = '\u33d_rotation'
这样的字符串。其中\u33
是3的代码。这只是一个简单的测试用例。但这给了我:
SyntaxError:格式错误的Unicode字符转义序列
无论如何组合unicode与普通?
我试图将它全部转换为unicode,如下所示:
'\\u' + '3d_rotation'.split('').map(char => String.charCodeAt(char).toString(16)).join('\\u')
所以我现在有:
const str = '\u33\u64\u5f\u72\u6f\u74\u61\u74\u69\u6f\u6e'
但这也会产生同样的错误
答案 0 :(得分:5)
Unicode转义序列由4个十六进制数字组成。
例如:©
为\u00A9
,而不是\uA9
以下是通过代码点转义字符的各种方法(来源:MDN) - 请注意前两个使用Latin-1
编码,因此不适合您的代码:
\XXX
The character with the Latin-1 encoding specified by up to three
octal digits XXX between 0 and 377.
For example, \251 is the octal sequence for the copyright symbol.
\xXX
The character with the Latin-1 encoding specified by the two
hexadecimal digits XX between 00 and FF.
For example, \xA9 is the hexadecimal sequence for the copyright symbol.
\uXXXX
The Unicode character specified by the four hexadecimal digits XXXX.
For example, \u00A9 is the Unicode sequence for the copyright symbol.
\u{XXXXX}
Unicode code point escapes.
For example, \u{2F804} is the same as the simple Unicode escapes \uD87E\uDC04.
答案 1 :(得分:2)
您可以组合它们,但使用正确的Unicode转义序列。
像这样:
const str = '\u0033d_rotation';
console.log(str);
或者像这样:
const str = '\x33d_rotation';
console.log(str);
或者它可以更容易阅读:
const str = '\u{33}d_rotation';
console.log(str);