`
starbhhc
  • 浏览: 661409 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

javascript gb2312转utf-8

阅读更多
汉字标准交换码共分两级。第一级为常用字,有3755字,按汉语拼音字母顺序排列,第二级为次常用字,有3008字,按部首排列。GB2312的编码范围为2121H-777EH.

UNICODE 是两字节的全编码,对于ASCII字符它也使用两字节表示。代码页是通过高字节的取值范围来确定是ASCII字符,还是汉字的高字节。如果发生数据损坏, 某处内容破坏,则会引起其后汉字的混乱。UNICODE则一律使用两个字节表示一个字符,最明显的好处是它简化了汉字的处理过程。

关于编码的文章可以参考:


百度的页面是gb2312的,URL编码自然也是从gb转换而来,比如“一”这个字,百度转换的结果是D2%BB,而从Utf-8转换来的结果是%E4%B8%80比如google(gb是2字节编码,utf-8是3字节变长编码)

可以用javascript的encodeURI和decodeURI来得到这些结果,设置页面编码就可以看到不同结果了。

在网上找,也没找到现成的转换程序,只得自己写。还好网上不缺gb-utf的对照表,修改了一下就可以用了:gb-utf.txt

这个对照表是将gb字节编码转到utf的16进制编码,而不是字节编码。

javascript中escape和unescape是转换16进制编码用的,因此gb汉字到utf汉字的转换思路是:encodeURI("gb汉字"),到对照表中查找utf的16进制编码,unescape("16进制utf编码"),得到utf汉字。

中间那一步最关键,我的转换只用到了这一步,其他两步直接调用那两个函数就可以了。下面是转换程序:



function genCodeStr(){
    var codeRE = new RegExp("(.*) : (.*)","gi");
    var tempStr,codeStr = "";
    var myReader = new Reader();
    myReader.loadFile(inc/gb2312_utf.txt);//这里改成你的对照表存放的路径
    while(!myReader.fStream.atEndofLine) {
        tempStr = new String(myReader.fStream.readLine());
        codeStr += tempStr.replace(codeRE,"$1") + ":" + tempStr.replace(codeRE,"$2") + ":";
    }
    Application("codeData") = codeStr;
}
function getCodeStr(){
    var codeStr = new String(Application("codeData"));
    if(codeStr.indexOf("%a1%a1") == -1){
        genCodeStr();
    }
    return new String(Application("codeData"));
}
function gb2utf(gbStr){
    var codeStr = getCodeStr();
    var codeRE = new RegExp("(%..%..)","gi");
    var replaceRE = new RegExp("(%..%..)","i");
    var gbCode;
    var utfCode;
    var gbStart;
    while((codeRE.lastIndex < gbStr.length) && replaceRE.test(gbStr)){
        codeRE.exec(gbStr);
        gbCode = new String(RegExp.$1);
        gbStart = new Number(codeStr.indexOf(gbCode.toLowerCase()));
        var utfStart = 0;
        if(gbStart != -1){
            utfStart= gbStart + 7;
            utfCode = codeStr.substring(utfStart,utfStart + 6);
        }else{
            utfCode = "%u3000";
        }
        gbStr = gbStr.replace(replaceRE,utfCode);
    }
    return gbStr;
}

function Reader() {                        //Class        Reader()
    this.fso;                            //Private    fso
    this.fUri;                            //Private    fUri
    this.fStream;                        //Private    fStream
    try{
        this.fso = new ActiveXObject("Scripting.FileSystemObject");
    }catch(exception) {
        throw exception;
    }
    this.loadFile = function(file) {        //Public        loadFile(file)
            this.fUri = Server.mappath(file);
            //var fStream = fso.CreateTextFile(tfolder,true,false);
            //fStream.WriteLine(test);
            if(this.fso.fileExists(this.fUri)){
                this.fStream = this.fso.openTextFile(this.fUri);
            }else{
                Response.write(file dos not exist);
            }
    }
    this.readLineN = function(num) {
        var i = 1;
        while(i < num && !this.fStream.atEndOfLine) {
            this.fStream.skipLine();
            i++
        }
        return this.fStream.readLine();
    }
    this.closeFile = function() {
        fStream.Close();
        fso.Close;
    }
}


对照表就是gb-utf.txt了,你自己改一下读取路径即可。
还需要注意的是,上面的程序是需要在服务器端运行的,因为涉及到文件操作
分享到:
评论

相关推荐

    js gb2312和utf-8互转

    根据提供的文件信息,本文将详细解释如何在JavaScript中实现GB2312编码与UTF-8编码之间的相互转换。此技术对于处理不同编码格式的文本数据尤为重要,尤其是在Web开发领域中,经常需要处理多种字符集的数据。 ### GB...

    用javascript实现gb2312转utf-8的脚本

    用javascript实现gb2312转utf-8的脚本 本文讲解如何使用javascript实现gb2312编码到utf-8编码的转换。gb2312是中国国家标准的汉字编码字符集,共分两级,第一级为常用字,有3755字,第二级为次常用字,有3008字。...

    JS GB2312转UTF8 支持中英文混合

    JS GB2312TOUTF8 UTF8TOGB2312 编码转换 /* * GB2312转UTF8 * 例: * var xx=new GB2312UTF8(); * var Utf8=xx.Gb2312ToUtf8("你aaa好aaaaa"); * var Gb2312=xx.Utf8ToGb2312(Utf8); * ...

    两种(GB2312与UTF-8)网页简繁转化JS代码.zip

    例如,如果一个GB2312编码的网页需要展示繁体中文内容,可以使用这些JavaScript代码将GB2312编码的简体中文转换为UTF-8编码的繁体中文。反之,如果用户需要查看简体版,也可以进行反向转换。 需要注意的是,由于...

    自动检测汉字GB18030编码与UTF-8编码

    想到如下特征来识别汉字: 1. 如果第1位是0就不需要判断的,一定是ASCII字符。... 如果第1位是1开头的,第2位是0开头的,一定是GB编码。 3. 如果第1位是非1110开头的,则一定是GB编码。 4. 多做几个汉字判断。

    HTML1114 (HTTP 标头)的代码页 gb2312 覆盖(META 标记)的冲突的代码页 utf-8

    **标题:“HTML1114 (HTTP 标头)的代码页 gb2312 覆盖(META 标记)的冲突的代码页 utf-8”** 在本案例中,用户遇到的问题是关于在网页中导入Excel数据时出现的字符编码冲突问题。具体表现为,当尝试使用JavaScript库...

    gbk网页模板转utf-8的绿色小工具

    标题“gbk网页模板转utf-8的绿色小工具”所涉及的知识点主要在于网页模板的字符编码转换。GBK到UTF-8的转换通常是为了使网页在全球范围内具有更好的兼容性和显示一致性,因为UTF-8被更多浏览器和服务器支持,尤其是...

    一个基于jQuery的autocomplete(gb2312、utf-8)

    本篇文章将深入探讨一个基于jQuery的Autocomplete插件,它支持GB2312和UTF-8编码,对于中文环境有着良好的适应性。 jQuery Autocomplete插件是jQuery UI库中的一个重要组件,它为文本输入框提供了自动完成的功能。...

    将字符串转换成gb2312或者utf-8编码的参数(js版)

    在JavaScript中,处理URL编码通常使用`encodeURIComponent()`函数,但这个函数默认使用UTF-8编码,如果需要使用GB2312编码,就需要自定义编码函数。提供的代码实现了一个名为`UrlEncodeGB2312`的方法,以及一个通用...

    GB/BIG5/UTF-8 文件编码批量转换工具

    "GB/BIG5/UTF-8 文件编码批量转换工具"是一个专门用于处理这三种编码格式之间转换的应用程序,尤其适用于需要整体调整网站编码的场景。 首先,让我们了解这三种编码的特性: 1. **GB(GBK)**:全称为“汉字内码...

    js将字符转换为UTF-8字符的工具

    在处理字符编码时,JavaScript 提供了一些内置的功能来支持不同的字符编码格式,例如从 GB2312(简体中文的常用编码格式之一)转换到 UTF-8(一种通用的多语言编码标准)。在本场景中,我们讨论的是一个基于 ...

    ASP同一站点下gb2312和utf-8页面传递参数乱码的终极解决方法

    当一个网站需要同时支持GB2312和UTF-8编码时,这个问题就显得尤为突出。本篇文章将详细阐述在ASP环境下,如何解决在同一站点下不同编码页面间传递参数时出现乱码的终极方法。 首先,了解编码的基础知识是解决问题的...

    解决UTF-8 版系统在采集GB2312,GBK系统乱码的问题

    本文将深入探讨如何解决UTF-8编码系统在采集GB2312或GBK编码系统时出现的乱码问题。 首先,我们需要理解UTF-8、GB2312和GBK编码的差异。UTF-8是一种广泛使用的多字节Unicode字符编码,它可以表示Unicode字符集中...

    用Javascript实现UTF8编码转换成gb2312编码

    在JavaScript中,编码转换是一个常见的任务,特别是在处理中文字符时,因为不同的编码标准如UTF-8和GB2312可能会导致乱码问题。这里,我们有两个函数:`UrlEncode` 和 `getSpell`,它们用于将UTF8编码的字符串转换为...

    GB2UTF8.rar_GB2UTF8_convert_gb2312 utf8_utf8 gb2312_website

    "GB2UTF8"转换工具就是为此目的设计的,它允许用户将网站的HTML、CSS、JavaScript等文件从GB2312编码转换为UTF-8,反之亦然。这大大减轻了手动修改大量文件的工作量,提高了效率。工具的核心功能包括: 1. 批量转换...

    GB/BIG5/UTF-8文件编码批量转换程序

    不同的编码标准如GBK(GB2312的扩展)、BIG5和UTF-8各自有着特定的应用场景和特性。在处理跨平台或者多语言的项目时,文件编码的兼容性问题时常出现,这时就需要相应的工具进行编码转换。"GB/BIG5/UTF-8文件编码批量...

    Web开发关于UTF-8的问题总结.docx

    `iconv("UTF-8", "GB2312", $filename);` 3. MYSQL数据库使用UTF-8编码的问题: - MySQL数据库应设置为使用UTF-8通用多八位字节无边界排序(utf8mb4)编码,以支持所有Unicode字符,包括表情符号等特殊字符。 - ...

    关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法

    本问题涉及的是一个具体的情景,即UTF-8编码的客户端通过AJAX方式从GB2312编码的服务器端获取数据时遇到的乱码问题。UTF-8是一种广泛采用的Unicode字符编码标准,而GB2312是中国大陆早期的简体中文编码标准,这两种...

    将编码从GB2312转成UTF-8的方法汇总(从前台、程序、数据库)

    ### GB2312与UTF-8编码概述 GB2312是一种简体中文字符集标准,用于汉字编码,而UTF-8是Unicode的转译形式,是一种可变长度的编码系统,支持所有Unicode字符。在国际化的过程中,为了更好地处理各种语言的字符,常常...

Global site tag (gtag.js) - Google Analytics