动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网页制作 > Javascript教程
网页制作:Dreamweaver教程,FrontPages教程,Javascript教程,HTML教程,CSS教程,心得技巧,DHTML教程,网页特效,Discuz!论坛
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Javascript教程 ]的信息

本月文章推荐
.js变量作用域及可访问性的探讨.
.Javascript实例教程(1) 创建弹出.
.Javascript实例教程(13) 鼠标触发.
.通过JAVAScript实现页面自适应.
.预装载以及JavaScript Image()对.
.CSS+JavaScript打造超酷右键菜单.
.js事件列表.
.Javascript实例教程(19) 使用HoT.
.Javascript实例教程(18) 数组.
.如何用javascript防止连打(双击.
.Javascript实例教程(19) 使用HoT.
.Javascript实例教程(11) 隐藏scr.
.Javascript制作浮动的工具条.
.利用javascript从数据库取数据来.
.在JavaScript中实现命名空间.
.如何在服务端(Page.Write)调用自.
.注意JavaScript中RegExp对象的te.
.利用JS获取IE客户端IP及MAC的实现.
.在网页里做类似window右键的弹出.
.用javascript实现select的美化.

javascript gb2312转utf-8

文章类别:Javascript教程 | 发表日期:2006-9-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了,你自己改一下读取路径即可。
还需要注意的是,上面的程序是需要在服务器端运行的,因为涉及到文件操作。


上一篇:使用Javascript修改客户端注册表 人气:9778
下一篇:Gb2312转utf-8(vbs+js) 人气:9929
点击此处浏览全部gb2312转utf-8的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-16 乘风多用户PHP统计系统 v3.4
2008-5-16 轩溪下载系统 v3.78 build 0515
2008-5-16 普沙B2B 浙江省商贸网 v2.0
2008-5-16 asp抓蜘蛛的小程序 v1.0
2008-5-16 齐齐乐网私服发布站 仿haosf新版
2008-5-16 IssTech信息反馈系统 v1.0
2008-5-16 自由领域大头贴(js接口版) 修正版
2008-5-16 医院网站系统
2008-5-16 智拓-分类信息管理系统 v5.0
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報