JavaScript 中汉字的 Unicode 编码范围主要位于 \u4e00
到 \u9fff
之间。Unicode 是一种字符编码标准,它为每个字符分配了一个唯一的数字,这个数字可以用不同的方式表示,比如十六进制。
\u0000
到 \uffff
,涵盖了大部分常用字符。// 获取汉字的 Unicode 编码
let chineseChar = '汉';
let unicode = chineseChar.charCodeAt(0).toString(16); // 转换为十六进制
console.log(`汉字 "${chineseChar}" 的 Unicode 编码是 \\u${unicode}`);
// 从 Unicode 编码转换回汉字
let hexCode = '\\u6c49'; // "汉" 的 Unicode 编码
let decodedChar = String.fromCharCode(parseInt(hexCode.slice(2), 16));
console.log(`Unicode 编码 ${hexCode} 对应的汉字是 "${decodedChar}"`);
问题:在处理包含特殊字符或表情符号的文本时,可能会遇到编码不一致的问题。
原因:这些字符可能位于 Unicode 的辅助平面,需要两个 UTF-16 单元(称为代理对)来表示。
解决方法:
function getFullUnicode(str) {
return Array.from(str).map(c => {
let code = c.charCodeAt(0);
if (code > 0xFFFF) {
code -= 0x10000;
return '\\u' + (0xD800 + (code >> 10)).toString(16).padStart(4, '0') +
'\\u' + (0xDC00 + (code & 0x3FF)).toString(16).padStart(4, '0');
} else {
return '\\u' + code.toString(16).padStart(4, '0');
}
}).join('');
}
let emoji = '😊';
console.log(getFullUnicode(emoji)); // 输出完整的 Unicode 编码
通过这种方式,可以确保即使是复杂的 Unicode 字符也能被正确处理和显示。
领取专属 10元无门槛券
手把手带您无忧上云