当前位置: 技术问答>java相关
jsp文件中凡是中文的,到浏览器上全成了乱码,清高手指点
来源: 互联网 发布时间:2014-12-26
本文导语: 我使用的是weblogic5.1,NT4,jdk1.2.2 | 1.在jsp文件中加入: 2.对于从数据库中取出的中文或通过url传递过来的中文参数要进行内码转换 | to ter: 如golden_silence(golden_silence)一样 | ...
我使用的是weblogic5.1,NT4,jdk1.2.2
|
1.在jsp文件中加入:
2.对于从数据库中取出的中文或通过url传递过来的中文参数要进行内码转换
2.对于从数据库中取出的中文或通过url传递过来的中文参数要进行内码转换
|
to ter:
如golden_silence(golden_silence)一样
如golden_silence(golden_silence)一样
|
yangzi()的方法可以解决问题。但问题的根本在于javasoft编制servlet api时没有充分考虑非英语国家文字的内吗转换问题。Java 的基本类也可能存在问题。由于国际化的工作并不是在国内完成的,所以在这些基本类发布之前,没有经过严格的测试,所以对中文字符的支持并不像 Java Soft 所声称的那样完美。前不久,我的一位技术上的朋友发信给我说,他终于找到了 Java Servlet 中文问题的根源。两周以来,他一直为 Java Servlet 的中文问题所困扰,因为每面对一个含有中文字符的字符串都必须进行强制转换才能够得到正确的结果(这好象是大家公认的唯一的解决办法)。后来,他确实不想如此继续安分下去了,因为这样的事情确实不应该是高级程序员所要做的工作,他就找出 Servlet 解码的源代码进行分析,因为他怀疑问题就出在解码这部分。经过四个小时的奋斗,他终于找到了问题的根源所在。原来他的怀疑是正确的, Servlet 的解码部分完全没有考虑双字节,直接把 %XX 当作一个字符。(原来 Java Soft 也会犯这幺低级的错误!)
如果你对这个问题有兴趣或者遇到了同样的烦恼的话,你可以按照他的步骤对 Servlet.jar 进行修改:
找到源代码 HttpUtils 中的 static private String parseName ,在返回前将 sb(StringBuffer) 复制成 byte bs[] ,然后 return new String(bs,”GB2312”)。作上述修改后就需要自己解码了:
HashTable form=HttpUtils .parseQueryString(request.getQueryString())或者
form=HttpUtils.parsePostData(……)
千万别忘了编译后放到 Servlet.jar 里面。
如果你对这个问题有兴趣或者遇到了同样的烦恼的话,你可以按照他的步骤对 Servlet.jar 进行修改:
找到源代码 HttpUtils 中的 static private String parseName ,在返回前将 sb(StringBuffer) 复制成 byte bs[] ,然后 return new String(bs,”GB2312”)。作上述修改后就需要自己解码了:
HashTable form=HttpUtils .parseQueryString(request.getQueryString())或者
form=HttpUtils.parsePostData(……)
千万别忘了编译后放到 Servlet.jar 里面。
|
用的jdk1.3.0.1没有这个问题!
|
建议用英文操作系统环境,你是吗
|
反正我在英文window可以解决,在中文window解决不了(同样的程序代码)
如果你解决的话,不要忘了稍个口信给我哦。
如果你解决的话,不要忘了稍个口信给我哦。
|
对字符串转一下:
ss=new String(ss.getBytes("iso-8859-1"),"GB2312");
就可以了。
ss=new String(ss.getBytes("iso-8859-1"),"GB2312");
就可以了。
|
呵呵,可你这样改了以后,我要想处理其它亚洲文字(如:日文,韩文)可惨了。
所以,不推荐上面所说的方法。
所以,不推荐上面所说的方法。