日期:2014-05-16  浏览次数:20464 次

Javascript 控件开发的字符编码问题?
编写可重用的Js应用模块,避免不了参数的传递,这就涉及到了编码的问题

GBK时
Jsp:                                       <%request.setCharacterEncoding   ( "GBK ");%>
Servlet:                               request.setCharacterEncoding   ( "GBK ");
java文件:                           UTF-8
javascript文件:                 UTF-8
server.xml(tomcat)           URIEncoding= "GBK "

我用的是MyEclipse编辑器,当新建一个XXX.js文件时,可以指定编码,有ISO-8859-1,UTF-8,UTF-16,UTF-16LE,UTF-16BE等等,就是没有GBK!!!,不得已使用了UTF-8,java文件使用UTF-8好象是没什么关系的,它不会被导入页面


下面轮到参数传递了。
从浏览器的文本框输入一个汉字,点提交按钮,这个字的编码是操作系统的编码转成了页面的GBK发送到servlet(?猜测),servlet用GBK编码方式返回其他的被检索到的汉字到原页面,由于原页面的编码是GBK,request能正常取得的GBK编码的汉字,servlet如果以url参数形式返回汉字,由于server.xml中指定了GBK,所以也能正常得到汉字参数。

那对于脚本怎么办?脚本有一个location.href,其参数是汉字,脚本是UTF-8的文件编码,由脚本动态形成的含汉字url参数链(?a=你好吗&b=我不好,经过encodeURI()),其汉字是UTF-8的编码(?猜测),这些汉字参数发送到浏览器时(a=%AB%CD%E&b=%EW%ER%WE,),由于server.xml指定的是GBK,servlet接收到的汉字就是乱码了,这里会不会是产生Js乱码的根源?

我想知道,参数传递流程是不是这样的,如果是,那么把UTF-8的JS文件转码成GBK的,就应该没问题了吧?(怎么转?MyEclipse竟然没有GBK编码支持?)


这个问题缠绕了很长时间了。要彻底解决

------解决方案--------------------
http://webim.csdn.net/ui/scripts/Csdn/IM/CsdnWebIMMember.js

case 1 : alert( "\u60a8\u7684\u597d\u53cb\u603b\u4eba\u6570\u5df2\u8fbe\u7cfb\u7edf\u4e0a\u9650\uff01 "); break;