需求
在js中将中文用gb2312编码。如,“我”编码后应该是“%CE%D2”。
分析
大家知道,encodeURI和encodeURIComponent会用utf-8编码,如“我”编码后是“%E6%88%91”。据实验,似乎没有参数指定编码的地方。只有另寻他法。
大致分析有如下几种解决方案:
1. 用js创建一个隐藏的iframe并指定其为gb2312编码,将需要转换的文本放到iframe的form的一个input中,将form指定为get方式并提交,
然后获取其url并解析,应该可以得到其gb2312编码后的文本。
2. 用ajax传到服务器上编码,然后传回来。
3. 在js中创建一个gb2312编码表。
实现
第一种方案个人感觉太折腾,需要在多个不同的浏览器下测试。
第二种方案需要有服务器配合。
下面是第三种方案的实现:
最开始打算使用数组存储编码表,后来为了减小js文件大小,改用string来存储。
于是,js代码如下:
代码
复制代码 代码如下:
function encodeToGb2312(str){
var strOut="";
for(var i = 0; i < str.length; i++){
var c = str.charAt(i);
var code = str.charCodeAt(i);
if(c==" ") strOut +="+";
else if(code >= 19968 && code <= 40869){
index = code - 19968;
strOut += "%" + z.substr(index*4,2) + "%" + z.substr(index*4+2,2);
}
else{
strOut += "%" + str.charCodeAt(i).toString(16);
}
}
return strOut;
}
function decodeFromGb2312(str){
var strOut = '';
for (var i=0;i<str.length; i++){
var c = str.charAt(i);
// +是空格
if (c == '+'){
strOut += ' ';
}
// a,b,c,1,2等,非%开头的,直接返回本身
else if (c != '%'){
strOut += c;
}
// %开头
else{
i++;
var nextC = str.charAt(i);
// 数字,则不是汉字
if (!isNaN(parseInt(nextC))){
i++;
strOut += decodeURIComponent(c+nextC+str.charAt(i));
}
else{
var x = new String();
try
{
var code = str.substr(i,2)+str.substr(i+3,2);
i = i + 4;
var index = -1;
while ((index = z.indexOf(code,index+1)) != -1){
if (index%4 == 0){
strOut += String.fromCharCode(index/4+19968);
break;
}
}
}catch(e){}
}
}
}
return strOut;
}
var z='{0}';
详细出处参考:http://www.jb51.net/article/21686.htm###
分享到:
相关推荐
在JavaScript中进行GB2312编码和解码可以帮助我们正确地在不同环境间传输和展示中文字符。 首先,让我们理解GB2312编码的工作原理。GB2312编码是基于两个字节的,每个汉字或符号由两个连续的字节表示。对于一个GB...
js 原生只支持utf-8,扩展 js转换成GB2312,js 原生只支持utf-8,扩展 js转换成GB2312,js 原生只支持utf-8,扩展 js转换成GB2312,
在提供的文件`gbk.js`中,可能包含了专门用于处理gb2312编码的JS函数或工具,用于在IE环境下进行编码转换。这些函数可能包括读取gb2312编码的数据,将其转换为UTF-8或其他编码,以便在现代浏览器或系统中正确显示。 ...
在JavaScript(js)编程语言中,GB2312编码是一种早期的中文字符编码标准,主要应用于简体中文环境。GB2312编码表包含了6763个常用汉字和一些其他符号,为中文信息处理提供了基础。然而,在网络传输和处理中,由于GB...
2. **GB2312编码**:GB2312是中国大陆广泛使用的简体中文字符编码标准,包含了6763个常用汉字。在ASP程序中,如果涉及到中文字符的处理,就需要确保页面和数据库的编码与GB2312一致,以避免乱码。 3. **ASP环境中的...
js将汉字转换为GB2312编码格式,用法:引用此js,调用‘’encodeToGb2312(str)‘’即可。
例:中 D6D0 国 B9FA http://www.mytju.com/classcode/tools/encode_gb2312.asp 开发小程序蓝牙时,发送中文,硬件蓝牙要求gbk2312转码,我费了九牛二虎之力,终于找到简单有效的方法
根据提供的文件信息,本文将详细解释如何在JavaScript中实现GB2312编码与UTF-8编码之间的相互转换。此技术对于处理不同编码格式的文本数据尤为重要,尤其是在Web开发领域中,经常需要处理多种字符集的数据。 ### GB...
在JavaScript中,将中文汉字转换为GBK(GB2312)编码是一个常见的需求,特别是在处理与老式系统或浏览器兼容性问题时。GBK是中国大陆广泛使用的简体中文字符集,它扩展了GB2312,包含了更多的汉字和符号。在...
在JavaScript中,编码转换是一个常见的任务,特别是在处理中文字符时,因为不同的编码标准如UTF-8和GB2312可能会导致乱码问题。这里,我们有两个函数:`UrlEncode` 和 `getSpell`,它们用于将UTF8编码的字符串转换为...
GBK是在GB2312基础上的扩展,增加了对GBK18030之前其他编码系统的兼容,包括BIG5(用于繁体中文)和GB2312不涵盖的一些少数民族文字,共收录了20902个汉字和符号,是GB2312的一个广泛使用的扩展版本。 转换码表是...
GB2312是中国大陆广泛使用的简体中文字符集,它包含6763个汉字,主要用于早期的计算机系统。而UTF-8是一种变长的Unicode编码,它可以表示几乎所有的世界语言字符,包括中文,并且在Web上得到了广泛的应用。 编码...
GB2312编码中,每个字符固定占用两个字节,这在处理中文文本时效率较低,但对老系统和硬件友好。 当涉及到UTF-8和GB2312之间的转换时,我们需要借助特定的转换函数或者库。在编程语言如Java、Python或C++中,都有...
GB2312编码,全称“汉字机内码”,是1980年中国制定的首个汉字编码国家标准,主要用于早期的中文操作系统,它包含了6763个常用汉字。然而,随着互联网的发展和全球化,UTF-8编码逐渐成为主流,因为它能够容纳所有...
这在处理中文字符时尤其重要,因为不同的编码方式对汉字的支持和表示方式有所不同。以下是两种在JavaScript中进行GB2312与UTF-8编码转换的方法。 **方法一:使用VBScript** 这段代码利用了VBScript的MidB函数来...
例如,如果一个GB2312编码的网页需要展示繁体中文内容,可以使用这些JavaScript代码将GB2312编码的简体中文转换为UTF-8编码的繁体中文。反之,如果用户需要查看简体版,也可以进行反向转换。 需要注意的是,由于...
小程序接收蓝牙设备发送的信息,但是蓝牙设备发送的是gb2312编码的arryBuffe,将发送的含中文编码转码成字符串,一直乱码。 原因 乱码的原因是编码方式不同,小程序显示的是utf-8编码,而蓝牙设备发送的是gb2312...
想到如下特征来识别汉字: 1. 如果第1位是0就不需要判断的,一定是ASCII字符。... 如果第1位是1开头的,第2位是0开头的,一定是GB编码。 3. 如果第1位是非1110开头的,则一定是GB编码。 4. 多做几个汉字判断。
本文讲解如何使用javascript实现gb2312编码到utf-8编码的转换。gb2312是中国国家标准的汉字编码字符集,共分两级,第一级为常用字,有3755字,第二级为次常用字,有3008字。UNICODE是两字节的全编码,对于ASCII字符...
base64中文加密解密 结果与c#一致,与c++基本一致