用JavaScript实现汉字与Unicode的相互转

一、将汉字转换为Unicode

/*
 *将汉字转换为Unicode
 *charCodeAt返回字符串指定位置的字符的Unicode编码(十进制形式),在0-65535之间。
 *
 *toString(16) 将一个数字转成十六进制。
 */
function toUnicode(chineseStr) {
    if (chineseStr == '') {
        return 'Please input Chinese Characters';
    }
    let unicodeStr = '';
    for (let i = 0, iLength = chineseStr.length; i < iLength; i++) {
        unicodeStr += '\\u' + chineseStr.charCodeAt(i).toString(16);
    }
    return unicodeStr;
}
let s1 = '我是谁',
    s2 = '𠮷';
console.log(toUnicode(s1)); //\u6211\u662f\u8c01
console.log(toUnicode(s2)); //\ud842\udfb7

二、将Unicode转换为汉字

/*
    将Unicode转成汉字
    parseInt开始出了个小插曲,表明自己还是要多巩固基础,就是parseInt(string, radix)的第二参数radix,表示的是第一个参数string代表的
    数字的基数,而不是你最终解析的结果的基数,比如radix为16时,表示string是16进制的数字的字符串。parseInt的返回值始终是10进制表示的。

    fromCharCode: 将Unicode编码为一个字符,可以有多个参数,即可以传入多个Unicode值,然后再返回相应的多个字符。
*/
function toChineseStr(unicodeStr) {
    if (unicodeStr == '') {
        return 'Please input hexadecimal Unicode';
    }
    unicodeStr = unicodeStr.split('\\u');
    let chineseStr = '';
    for (let i = 0, iLength = unicodeStr.length; i < iLength; i++) {
        chineseStr += String.fromCharCode(parseInt(unicodeStr[i], 16));
    }
    return chineseStr;
}
let c1 = '\\u6211\\u662f\\u8c01',
    c2 = '\\ud842\\udfb7';
console.log(toChineseStr(c1)); //我是谁
console.log(toChineseStr(c2)); //𠮷
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值