关于传递参数乱码和AJAX乱码问题
2008-11-18 09:17
387 查看
Weblogic
10的JVM启动字符集与操作系统默认字符集相同,因此很可能导致默认字符集与开发环境不同。如果使用的是UTF-8编码的应用不会出现任何的问题,但是一旦编码采用GBK的时候会出现乱码问题。使用AJAX方式构建的应用很可能由于传输过程中使用了字节流而产生乱码。
最简单的解决方法是修改weblogic的启动脚本,设置JVM字符集启动参数。
Weblogic的根目录/wlserver_10.0/common/bin/startManagedWebLogic.cmd或者startManagedWebLogic.sh
这个文件中增加一行:
set
JAVA_OPTIONS=-Dfile.encoding=GBK
其实配置很简单,也可以在commEnv.cmd中更改
AJAX出现乱码的另外一个解决方法是对传递的参数做两次转码
使用javascript的encodeURI
函数两次传递参数,这样在服务器端使用request.getParameter()
是会取得一次编码的内容,再使用java.net.URLDecoder.decode(
)函数就可以获得正确的信息,这个能够取得正确信息也是因为他们是拥有一样的字节流编码规则。
var value=你想传输的变量;
value=encodeURI(value);
value=encodeURI(value);这样传送给服务器端
String value=request.getParameter("value");可以使用很多种方式传给server端
value=URLDecoder.decode(value,"utf8");
但是最好还是使用prototype
等成熟的框架来传递参数,它们都做了转码并传递参数,可以避免发生一些乱码的问题。
乱码并不神秘,也不用苦恼,其实关键之处只有一点。你的客户端传递的字节流的编码与服务器端的不一致,使用String的getBytes方法可以解决大多数情况。只要保证request传输的编码与server端JVM的编码一致便不会出现乱码的问题。
文本文件读取信息时出现的乱码问题,文本文件不同的字符集编码下构建出来的是不一样的,拿windows系统来说,在中文环境下建立的文本当你更改到英文环境是会无法打开,打开后也会出现乱码现象。
当你将一个在windows下生成的文本文件传送到JVM字符集编码为西方字符集的服务器上,这个时候解析文件如果不增加编码参数就会发生乱码情况。
InputStream
inStream = new
ByteArrayInputStream(inFile);
BufferedReader
in = new
BufferedReader(new
InputStreamReader(inStream,"GBK"));
如果不在reader中加入”GBK”作为参数就会发生乱码现象。
毕竟java是外国人设计的东西,他们有一个对中国人来说会经常制造出麻烦的习惯——使用iso-8859-1字符集作为默认字符集。这样的东西都会带来中文的无法处理或者乱码,虽然JVM内部是使用UTF来进行编码,但是还是会影响到中文的处理。所以涉及中文的东西多少都会出现这样的情况。
乱码出现的原因都是一样的,序列化的编码和解码字符集不一致导致,找到根源不难解决这样的问题,遇到问题要多多寻找本质原因。其实每个程序员在工作的时候最好都是与互联网联通的,这样才能保证最快速度的解决问题。当然自己一样可以找到问题的所在,只是时间上的消耗和精力上的消耗都是个问题。作为一个管理者自然也希望自己的手下都可以在最短的时间内创造最多的有效代码
10的JVM启动字符集与操作系统默认字符集相同,因此很可能导致默认字符集与开发环境不同。如果使用的是UTF-8编码的应用不会出现任何的问题,但是一旦编码采用GBK的时候会出现乱码问题。使用AJAX方式构建的应用很可能由于传输过程中使用了字节流而产生乱码。
最简单的解决方法是修改weblogic的启动脚本,设置JVM字符集启动参数。
Weblogic的根目录/wlserver_10.0/common/bin/startManagedWebLogic.cmd或者startManagedWebLogic.sh
这个文件中增加一行:
set
JAVA_OPTIONS=-Dfile.encoding=GBK
其实配置很简单,也可以在commEnv.cmd中更改
AJAX出现乱码的另外一个解决方法是对传递的参数做两次转码
使用javascript的encodeURI
函数两次传递参数,这样在服务器端使用request.getParameter()
是会取得一次编码的内容,再使用java.net.URLDecoder.decode(
)函数就可以获得正确的信息,这个能够取得正确信息也是因为他们是拥有一样的字节流编码规则。
var value=你想传输的变量;
value=encodeURI(value);
value=encodeURI(value);这样传送给服务器端
String value=request.getParameter("value");可以使用很多种方式传给server端
value=URLDecoder.decode(value,"utf8");
但是最好还是使用prototype
等成熟的框架来传递参数,它们都做了转码并传递参数,可以避免发生一些乱码的问题。
乱码并不神秘,也不用苦恼,其实关键之处只有一点。你的客户端传递的字节流的编码与服务器端的不一致,使用String的getBytes方法可以解决大多数情况。只要保证request传输的编码与server端JVM的编码一致便不会出现乱码的问题。
文本文件读取信息时出现的乱码问题,文本文件不同的字符集编码下构建出来的是不一样的,拿windows系统来说,在中文环境下建立的文本当你更改到英文环境是会无法打开,打开后也会出现乱码现象。
当你将一个在windows下生成的文本文件传送到JVM字符集编码为西方字符集的服务器上,这个时候解析文件如果不增加编码参数就会发生乱码情况。
InputStream
inStream = new
ByteArrayInputStream(inFile);
BufferedReader
in = new
BufferedReader(new
InputStreamReader(inStream,"GBK"));
如果不在reader中加入”GBK”作为参数就会发生乱码现象。
毕竟java是外国人设计的东西,他们有一个对中国人来说会经常制造出麻烦的习惯——使用iso-8859-1字符集作为默认字符集。这样的东西都会带来中文的无法处理或者乱码,虽然JVM内部是使用UTF来进行编码,但是还是会影响到中文的处理。所以涉及中文的东西多少都会出现这样的情况。
乱码出现的原因都是一样的,序列化的编码和解码字符集不一致导致,找到根源不难解决这样的问题,遇到问题要多多寻找本质原因。其实每个程序员在工作的时候最好都是与互联网联通的,这样才能保证最快速度的解决问题。当然自己一样可以找到问题的所在,只是时间上的消耗和精力上的消耗都是个问题。作为一个管理者自然也希望自己的手下都可以在最短的时间内创造最多的有效代码
相关文章推荐
- 关于javascript URL 传递参数乱码的问题及解决方案。
- 关于spring mvc的get方法传递中文参数时乱码问题(@RequestParam)
- ASP.NET关于前台脚本传递中文参数,后台获取乱码问题(乱码为方框,黑色方框等。。)
- 使用AJAX传递中文参数,在后台接受出现乱码问题
- 关于在EXT中短暂的记录Ext.data.HttpProxy等传递参数乱码的问题
- 解决ajax传递中文参数,出现乱码的问题
- java adf 使用ajax传递参数中有中文乱码问题(转)
- 关于前台URL传递中文参数到java后台乱码的问题
- ajax提交-----URL中文参数传递后的乱码问题
- 关于jsp中,以url形式传递中文参数的乱码的问题
- 关于struts2.1.6前台传递中文参数到后台action出现乱码问题的解决办法
- jquery.ajax GET 传递参数 乱码问题
- 关于jsp传递中文参数到controller乱码的问题
- ajax参数传递时中文乱码问题
- 关于使用showModalDialog传递参数出现中文乱码问题
- AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题
- 使用AJAX传递中文参数,在后台接受出现乱码问题
- 关于ajax中URL传递中文产生乱码的问题
- ajax传递参数中文乱码问题
- 用ajax传递参数时遇到中文乱码问题的解决方法