/*
常用中文的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; } |