All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
ASP.NET2.0中对GridView删除操作时“未能找到带参数的非泛型方法”的解决方案_.net资料_编程技术
在ASP.NET中自动给URL加上超级链接_[Asp.Net教程]
三层Web体系结构里的两种数据绑定模式_.net资料_编程技术
叩开C#之门系列之C#与面向对象编程语言_[Asp.Net教程]
Visual,Studio,2008,RTM,已经编译完毕,内部人员已可使用_[Asp.Net教程]
安装使用MySQL时一个典型错误的解决_php资料_编程技术
SQL数据库高级教程:学习 SQL BETWEEN_[SQL Server教程]
PHP代码:基本数据结构和php内置函数_php资料_编程技术
C#中索引器的概念和应用实例
C#技巧:网页表单自动填写技术(gmail为例)_[Asp.Net教程]
Reading number is top 10 pictures
你是左脑型还是右脑型
The real super beauty4
俄罗斯台球天后惊艳魅惑1
Angie Chiu vijara myth2
Absolutely shocked. National geographic 50 animal photographys9
XuRe xuan cool and refreshing photoes2
Men's and women's orgasms
Park waits to have her picture taken exposed
The real super beauty5
NeedWallpaper6
Download software ranking
Tram sex maniac 2 (H) rar bag13
Proficient in Eclipse
jdk1.6 for windows
Boxer vs Yellow5
网络管理员第三版
Unix video tutorial15
徐若瑄成名作“魔鬼天使”
Sora aoi - one of more PK
双旗镇刀客B
Unix video tutorial7
delv published in(发表于) 2013/12/31 6:34:26 Edit(编辑)
javascript,将gb2312编码转utf-8编码_JavaScript技术_编程技术

javascript,将gb2312编码转utf-8编码_JavaScript技术_编程技术

javascript 将gb2312编码转utf-8编码_JavaScript技术_编程技术-你的首页-uuhomepage.com

汉字标准交换码共分两级。第一级为常用字,有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了,你自己改一下读取路径即可。还需要注意的是,上面的程序是需要在服务器端运行的,因为涉及到文件操作。





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.