IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

Unicode与字符汉字相互转换

Accumulating 2012-04-19 23:45:04 累计浏览 5,240 次
本机暂存

/*

常用中文的unicode码的范围是4E00 ~ 9FA5,不包含全角在内,具体编码参见http://www.unicode.org/Public/5.0.0/ucd/Unihan.html

*/

1、将汉字转换为unicode

主要利用javascript正则表达式中的\uxxxx进行匹配,对匹配结果使用escape和replace,该方法仅对汉字有效:

1
2
3
4
5
6
function unicode_only_chs(str){ // str = "测试test"
    return str.replace(/([^\u0000-\u00FF])/g, function($0){ // $0 = "测","试"
        var tmp = escape($0); // tmp = "%u6D4B","%u8BD5"
        return tmp.replace(/(%u)(\w{4})/gi,"\\u$2") // 将"%u"替换为"\u",即"\u6D4B"
    });
}

2、将全部字符转换为unicode

利用charCodeAt()和toString(16)即可实现:

1
2
3
4
5
6
7
8
9
10
function unicode_all(str){ // str = "测试test"
    return str.replace(/([\u0000-\uFFFF])/g, function($0){ // $0 = "测","试","t","e","s","t"
        if($0.charCodeAt() < 256) {
            return '\\u00' + $0.charCodeAt().toString(16); // 0 ~ 255的英文字符
        }
        else {
            return '\\u' + $0.charCodeAt().toString(16);
        }
    });
}

3、unicode转换为字符和汉字

主要利用String.fromCharCode()和parseInt(,16):

1
2
3
4
5
6
function reconvert(str){
    str = str.replace(/(\\u)(\w{4}|\w{2})/gi, function($0,$1,$2){
        return String.fromCharCode(parseInt($2,16));
    });
    return str;
}

Demo

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 字符编码和中文乱码小叙 (累计阅读 7,119)
  2. 比较完美地解决了 vim 编辑中文的问题 (累计阅读 6,822)
  3. 获取指定(访客)IP的所有信息,地址、邮政编码、国家、经纬度等的API (累计阅读 6,459)
  4. 中文编码杂谈 (累计阅读 6,372)
  5. Hadoop的map/reduce作业输入非UTF-8编码数据的处理原理 (累计阅读 5,645)
  6. html页面里的幽灵空行――UTF8Bom (累计阅读 5,488)
  7. Django 中 "Data truncated for column xxx" 解决方法 (累计阅读 5,417)
  8. UTF-8编码中BOM的检测与删除 (累计阅读 5,251)
  9. python-django的中文编码总结 (累计阅读 5,101)
  10. JAVASCRIPT完美实现UTF8页面提交数据到GB2312 (累计阅读 4,922)