JavaScript字符串与Unicode编码互相转换
JavaScript内部使用Unicode编码,每个字符对应一个Unicode码位,可以通过字符串和Unicode编码之间的互相转换来操作Unicode码位。
字符串转Unicode编码
字符串转换成Unicode编码可以使用JavaScript内置的charCodeAt()
函数。
charCodeAt()
函数返回的是字符串中某个字符的Unicode编码,如果字符串中包含多个字符,需要通过下标来访问每个字符的Unicode编码。
基本使用
const str = 'Hello World!';
const unicode = str.charCodeAt(0); // 返回'H'的Unicode编码
console.log(unicode); // 72
转换整个字符串
可以使用循环结构将字符串中每个字符的Unicode编码转换出来。
const str = 'Hello World!';
let unicodeStr = '';
for (let i = 0; i < str.length; i++) {
const unicode = str.charCodeAt(i);
unicodeStr += `\\u${unicode.toString(16).toUpperCase()}`;
}
console.log(unicodeStr); // '\u0048\u0065\u006C\u006C\u006F\u0020\u0057\u006F\u0072\u006C\u0064\u0021'
Unicode编码转字符串
Unicode编码转换成字符串可以使用JavaScript内置的fromCharCode()
函数。
fromCharCode()
函数可以接收是Unicode码位的值,将其转换成对应的字符,可以支持多个Unicode码位,返回对应的字符串。
基本使用
const unicode = 72;
const str = String.fromCharCode(unicode); // 返回Unicode编码为72的字符'H'
console.log(str); // 'H'
转换整个字符串
可以使用循环结构将Unicode编码转换成字符串。
const unicodeStr = '\u0048\u0065\u006C\u006C\u006F\u0020\u0057\u006F\u0072\u006C\u0064\u0021';
let str = '';
const codeList = unicodeStr.match(/\\u[\dA-Fa-f]{4}/gm);
for (let code of codeList) {
const unicode = parseInt(code.slice(2), 16);
str += String.fromCharCode(unicode);
}
console.log(str); // 'Hello World!'
示例说明
示例1:字符串转Unicode编码
const str = '中国';
let unicodeStr = '';
for (let i = 0; i < str.length; i++) {
const unicode = str.charCodeAt(i);
unicodeStr += `\\u${unicode.toString(16).toUpperCase()}`;
}
console.log(unicodeStr); // '\u4E2D\u56FD'
代码段中,使用charCodeAt()
函数获取字符串中每个字符的Unicode编码,转换成16进制输出成形如'\uXXXX'的形式。字符串'中国'转换后的结果为'\u4E2D\u56FD'。
示例2:Unicode编码转字符串
const unicodeStr = '\u4E2D\u56FD';
let str = '';
const codeList = unicodeStr.match(/\\u[\dA-Fa-f]{4}/gm);
for (let code of codeList) {
const unicode = parseInt(code.slice(2), 16);
str += String.fromCharCode(unicode);
}
console.log(str); // '中国'
代码段中,将Unicode编码字符串按'\uXXXX'的形式进行正则匹配,提取出码位值进行转换成字符,最终将字符拼接成字符串'中国'。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js字符串与Unicode编码互相转换 - Python技术站