- 浏览: 661427 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (609)
- java (139)
- 数据库 (107)
- 微信 (23)
- IT生活 (5)
- web前端 (74)
- SSH (11)
- 设计模式 (12)
- 重要资料 (11)
- 其他 (15)
- java技巧 (23)
- 服务器 (9)
- 2D/GUI (3)
- JAVA3D (2)
- ANT (5)
- Apache项目 (19)
- 数据类型 (10)
- 报表 (3)
- Collections (6)
- SQL/JDBC (15)
- 开发类 (6)
- EJB (6)
- Email (6)
- 文件读写 (2)
- 游戏 (0)
- Flex (2)
- Generic (2)
- HIbernate (12)
- I18N (5)
- Java EE (9)
- java ME (4)
- JDK 6 (8)
- JNDI/LDAP (5)
- JSP (7)
- JSTL (2)
- 正则表达式 (2)
- 安全 (2)
- Struts2 (12)
- Spring (4)
- Web服务 (10)
- Xml (1)
- JavaScript (30)
- AJAX (7)
- 验证 (4)
- 上传下载 (1)
- office办公软件 (1)
- Android (2)
- IOS (0)
- Dubbo (3)
- memcached/redis (1)
- 小程序 (1)
- 微信公众号 (0)
最新评论
-
wf_wangfeng:
怎么我用第一种方法不行呢 alert(document.rea ...
当jsp页面完全加载完成后执行一个js函数 -
Lori_Liu:
有帮助,至少可以解决了目前所遇到的问题!谢谢..
当jsp页面完全加载完成后执行一个js函数 -
starbhhc:
String actionMessage = new Stri ...
Java读取txt文件乱码 -
starbhhc:
Sev7en_jun 写道GOOD
客气,互相交流。。
javaeye论坛规则小测验(答案)--star -
Sev7en_jun:
GOOD
javaeye论坛规则小测验(答案)--star
汉字标准交换码共分两级。第一级为常用字,有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了,你自己改一下读取路径即可。
还需要注意的是,上面的程序是需要在服务器端运行的,因为涉及到文件操作
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了,你自己改一下读取路径即可。
还需要注意的是,上面的程序是需要在服务器端运行的,因为涉及到文件操作
发表评论
-
jquery easyui DataGrid
2015-04-11 17:15 1129Easyui Demo网站: http://www.je ... -
js获取带checkbox行的记录的Id值的两个方法
2015-04-09 14:44 689第一种: function updateProcess() ... -
文本域字符限制。
2014-10-24 13:11 544页面中:<textarea id="set& ... -
JQuery 样式设置、追加、移除与切换
2014-01-21 13:41 895获取与设置样式 获取class和设置class都可以使用a ... -
jQuery 判断页面元素是否被选中的几种方法
2014-01-21 11:03 1418jQuery 判断 checkbox 是否被选中的几种方法: ... -
jquery和js初始化加载的多种方法
2014-01-20 14:48 919jquery和js初始化加载页面的区别: jquery:等 ... -
js自动刷新当前页面
2013-12-19 14:09 811reload 方法,该方法强 ... -
页面中各种加载select的所有值
2012-08-24 18:15 10091.在页面中加载select的所有值。 1、比如,把一个ma ... -
javascript评估用户输入密码的强度
2012-08-22 15:00 907密码已经是我们生活工作中必不可少的工具,但一个不安全的密码有又 ... -
需要掌握的八个CSS布局技巧
2011-01-06 17:05 8511.若有疑问立即检测 在 ... -
ExtJs是通过Ext.ToolTip和Ext.QuickTips两个组件来实现浮动提示功能的
2010-09-27 13:59 1823Ext.QuickTips QuickTips代码示例:只需 ... -
Extjs 数据读取对象ArrayReader/JsonReader/XmlReader
2010-09-18 11:12 12231.<!DOCTYPE html PUBLIC &quo ... -
不错的JS中Cookie的文章
2010-09-10 23:17 847Cookies,有些人喜欢它们 ... -
js中cookie的使用
2010-09-10 23:14 1063cookie概述 在上一节,曾经利用一个不变的框架来存储购物栏 ... -
Javascript实例教程(9) 随机显示图片
2010-07-21 16:07 993有时你可以会在一些网站看到一些变化显示的图片,这除了可以利用F ... -
Javascript获取地址参数
2010-07-21 16:06 988修改地址后的参数: <script> funct ... -
JavaScript仿Windows关机效果
2010-07-21 16:04 972Windows关机效果分析 使用Windows系统的用户在关机 ... -
JavaScript方法和技巧大全
2010-07-21 16:04 972JavaScript方法和技巧大全:基础知识 1 创建脚本 ... -
javascript弹出窗口问题总结
2010-07-21 16:02 8001.无提示刷新网页 大家有没有发现,有些网页,刷新的时 ... -
javascript操作cookie
2010-07-21 16:02 767使得在访问页面的时候能够沿用上次的设置,或者在不同的页面间共享 ...
相关推荐
根据提供的文件信息,本文将详细解释如何在JavaScript中实现GB2312编码与UTF-8编码之间的相互转换。此技术对于处理不同编码格式的文本数据尤为重要,尤其是在Web开发领域中,经常需要处理多种字符集的数据。 ### GB...
用javascript实现gb2312转utf-8的脚本 本文讲解如何使用javascript实现gb2312编码到utf-8编码的转换。gb2312是中国国家标准的汉字编码字符集,共分两级,第一级为常用字,有3755字,第二级为次常用字,有3008字。...
JS GB2312TOUTF8 UTF8TOGB2312 编码转换 /* * GB2312转UTF8 * 例: * var xx=new GB2312UTF8(); * var Utf8=xx.Gb2312ToUtf8("你aaa好aaaaa"); * var Gb2312=xx.Utf8ToGb2312(Utf8); * ...
例如,如果一个GB2312编码的网页需要展示繁体中文内容,可以使用这些JavaScript代码将GB2312编码的简体中文转换为UTF-8编码的繁体中文。反之,如果用户需要查看简体版,也可以进行反向转换。 需要注意的是,由于...
想到如下特征来识别汉字: 1. 如果第1位是0就不需要判断的,一定是ASCII字符。... 如果第1位是1开头的,第2位是0开头的,一定是GB编码。 3. 如果第1位是非1110开头的,则一定是GB编码。 4. 多做几个汉字判断。
**标题:“HTML1114 (HTTP 标头)的代码页 gb2312 覆盖(META 标记)的冲突的代码页 utf-8”** 在本案例中,用户遇到的问题是关于在网页中导入Excel数据时出现的字符编码冲突问题。具体表现为,当尝试使用JavaScript库...
标题“gbk网页模板转utf-8的绿色小工具”所涉及的知识点主要在于网页模板的字符编码转换。GBK到UTF-8的转换通常是为了使网页在全球范围内具有更好的兼容性和显示一致性,因为UTF-8被更多浏览器和服务器支持,尤其是...
本篇文章将深入探讨一个基于jQuery的Autocomplete插件,它支持GB2312和UTF-8编码,对于中文环境有着良好的适应性。 jQuery Autocomplete插件是jQuery UI库中的一个重要组件,它为文本输入框提供了自动完成的功能。...
在JavaScript中,处理URL编码通常使用`encodeURIComponent()`函数,但这个函数默认使用UTF-8编码,如果需要使用GB2312编码,就需要自定义编码函数。提供的代码实现了一个名为`UrlEncodeGB2312`的方法,以及一个通用...
"GB/BIG5/UTF-8 文件编码批量转换工具"是一个专门用于处理这三种编码格式之间转换的应用程序,尤其适用于需要整体调整网站编码的场景。 首先,让我们了解这三种编码的特性: 1. **GB(GBK)**:全称为“汉字内码...
在处理字符编码时,JavaScript 提供了一些内置的功能来支持不同的字符编码格式,例如从 GB2312(简体中文的常用编码格式之一)转换到 UTF-8(一种通用的多语言编码标准)。在本场景中,我们讨论的是一个基于 ...
当一个网站需要同时支持GB2312和UTF-8编码时,这个问题就显得尤为突出。本篇文章将详细阐述在ASP环境下,如何解决在同一站点下不同编码页面间传递参数时出现乱码的终极方法。 首先,了解编码的基础知识是解决问题的...
本文将深入探讨如何解决UTF-8编码系统在采集GB2312或GBK编码系统时出现的乱码问题。 首先,我们需要理解UTF-8、GB2312和GBK编码的差异。UTF-8是一种广泛使用的多字节Unicode字符编码,它可以表示Unicode字符集中...
在JavaScript中,编码转换是一个常见的任务,特别是在处理中文字符时,因为不同的编码标准如UTF-8和GB2312可能会导致乱码问题。这里,我们有两个函数:`UrlEncode` 和 `getSpell`,它们用于将UTF8编码的字符串转换为...
"GB2UTF8"转换工具就是为此目的设计的,它允许用户将网站的HTML、CSS、JavaScript等文件从GB2312编码转换为UTF-8,反之亦然。这大大减轻了手动修改大量文件的工作量,提高了效率。工具的核心功能包括: 1. 批量转换...
不同的编码标准如GBK(GB2312的扩展)、BIG5和UTF-8各自有着特定的应用场景和特性。在处理跨平台或者多语言的项目时,文件编码的兼容性问题时常出现,这时就需要相应的工具进行编码转换。"GB/BIG5/UTF-8文件编码批量...
`iconv("UTF-8", "GB2312", $filename);` 3. MYSQL数据库使用UTF-8编码的问题: - MySQL数据库应设置为使用UTF-8通用多八位字节无边界排序(utf8mb4)编码,以支持所有Unicode字符,包括表情符号等特殊字符。 - ...
本问题涉及的是一个具体的情景,即UTF-8编码的客户端通过AJAX方式从GB2312编码的服务器端获取数据时遇到的乱码问题。UTF-8是一种广泛采用的Unicode字符编码标准,而GB2312是中国大陆早期的简体中文编码标准,这两种...
### GB2312与UTF-8编码概述 GB2312是一种简体中文字符集标准,用于汉字编码,而UTF-8是Unicode的转译形式,是一种可变长度的编码系统,支持所有Unicode字符。在国际化的过程中,为了更好地处理各种语言的字符,常常...