简洁高效的 JavaScript 汉字编码转换

2008-04-14 11:57 | 分类 WebDev | By ming | 发表评论 »

    无意中搜索到关于js汉字编码转换的东东,不过网上写的都不够简洁,所以修改了下。

  js关于汉字转换成ascii或unicode主要是用escape及与 正则表达式 replace来完成,反过来的话则比较简单。。

String.cnStringToAscii = function(cnString) {//汉字转换ascii
    return escape(cnString).replace(/%u/g, '\&#x');
};

String.cnStringToUnicode = function(cnString) {//汉字转换unicode
    return escape(cnString).replace(/%/g, '\\');
};

/**
*charCodes ascii或unicode字符串
*regexp 匹配规则
*/
String.charCodeToCnString = function(charCodes, regexp) {
    return charCodes.replace(regexp, function($0, $1, $2) {
        return String.fromCharCode(
            parseInt($2, 16)/*把16进制的字符串转换成int型数字*/
        );
    });
};

String.asciiToCnString = function(asciiChars) {//ascii转换成汉字
    return String.charCodeToCnString(asciiChars, /(\&#x)(\w{4})/gi);
};

String.unicodeToCnString = function(unicodeChars) {//unicode转换成汉字,高效的..

    /*unicode转换成汉字不需要像ascii那么麻烦*/
    return unicodeChars + '';//虽然它已经是String类型,但再这样转换成String类型,居然直接变汉字了。
    //unicodeChars.split('\\u')[0];split也可以变成汉字,可以用任意'非中文字符'来split,如'\\','safdasf'等等。
    //unicodeChars.split('').join('');//也是可以的,这样每个字都成为数组的一个元素,与上一句一样
    //return String.charCodeToCnString(unicodeChars, /(\&#x)(\w{4})/gi); 这个效率最差
};


Tags:

转载请遵循"署名-非商业性使用-相同方式共享" 的创作共用协议。

返回正文

留下评论

(如发言后未显示则有待审核)