有人知道如何在javascript中将Unicode转换为字符串吗?例如:
\u2211 -> ∑
\u0032 -> 2
\u222B -> ∫
\u2211 -> ∑
\u0032 -> 2
\u222B -> ∫
k.ken 回复中的一个函数:
function unicodeToChar(text) {
return text.replace(/\\u[\dA-F]{4}/gi,
function (match) {
return String.fromCharCode(parseInt(match.replace(/\\u/g, ''), 16));
});
}
将输入字符串中的所有Unicode字符取出,并将它们转换为字符。
a-f
和使用不区分大小写的全局搜索 /gi
之间是否存在性能差异? - user4322543刚刚找到一种方法:
String.fromCharCode(parseInt(unicode,16))
会返回正确的符号表示。这里的unicode没有在前面添加\u
,只有数字。
要将给定的Unicode字符(例如)转换为字符串表示形式,您也可以使用以下一行代码:
var unicodeToStr = ''.codePointAt(0).toString(16)
上面的示例给出了 'F21D'。与 fontAwesome 一起使用,您将获得街景图标:'\F21D'
另一种方法:
const unicodeText = "F1A3";
let unicodeChar = JSON.parse(`["\\u${unicodeText}"]`)[0];
'Tom \u0026 Jerry' -> 'Tom & Jerry'
。虽然Bryan的答案也可以实现这个功能,但需要定义一个函数,而你的答案是一个优雅的单行代码。请注意:const string = "Tom \u0026 Jerry"; console.log( JSON.parse(`["${string}"]`)[0] ); // output: Tom & Jerry
。 - ADTCvar string = '/0004'; // One of unicode
var unicodeToStr = string.codePointAt(0).toString(16)
// This outputs Grinning Face `U+1F600`:
// https://www.compart.com/en/unicode/U+1f600
const code = "".trim().codePointAt(0).toString(16);
console.log(code); // 1f600
// Convert it back to string
const str = "\u{1f600}";
const str2 = String.fromCodePoint(0x1f600);
console.log( str, str2, ''.normalize() === str.normalize());
参考资料:
'\u2211' === '∑'
的意思是“Unicode 编码 \u2211 表示的字符与符号 ∑ 是等价的”。 - Blender