首先是CSDNzhanngle朋友的帖子
[url]http://blog.csdn.net/zhanngle/archive/2008/01/24/2063490.aspx[/url]
1.这个是最不会一次解决的东西
new String(string.getBytes("ISO8859-1"),"GBK");
2.接下来是对JS和servlet做手脚
js
servlet
博主指出:不推荐使用,URLDecoder.decode()与新浏览器不兼容
(JavaScript文档)关于encodeURI()和escape()
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
可以使用 unescape() 对 escape() 编码的字符串进行解码。
ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent()
替代它。
当然 如果使用escape方法代替encodeURI,也是需要进行两次编码
不明白在JS不用做任何事情的情况下
只有使用String n = new String (test.getBytes("ISO-8859-1"),"GBK");
就能得到正确的字符串
不是有说JS是用utf-8来发送信息的么?
如果这里把String n = new String (test.getBytes("ISO-8859-1"),"GBK");中的
GBK换为UTF-8 依然是乱码(包含单独替换和上面的所有涉及到编码地方的替换..)
在参考以下帖子后
[url]http://chenlb.blogjava.net/archive/2007/10/13/152638.html[/url]除非是在发送请求前对URL的编码已经进行了处理 比如encodeURI();一次
在servlet中只需要URLDecoder.decode(url, "UTF-8");就能正确解码
[url]http://blog.csdn.net/zhanngle/archive/2008/01/24/2063490.aspx[/url]
1.这个是最不会一次解决的东西
new String(string.getBytes("ISO8859-1"),"GBK");
2.接下来是对JS和servlet做手脚
js
var v = document.getElementById("test").value;
v=encodeURI(v); //最重要的部分,两次调用encodeURI ,就是编码两次
v=encodeURI(v);
servlet
String n2 = URLDecoder.decode(test, "utf-8");
很艰难的输出了汉字..
博主指出:不推荐使用,URLDecoder.decode()与新浏览器不兼容
(JavaScript文档)关于encodeURI()和escape()
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
可以使用 unescape() 对 escape() 编码的字符串进行解码。
ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent()
替代它。
当然 如果使用escape方法代替encodeURI,也是需要进行两次编码
response.setContentType("text/html;charset=GBK");
response.setCharacterEncoding( "GBK" );
PrintWriter out = response.getWriter();
String test = request.getParameter("test");
String n = new String (test.getBytes("ISO-8859-1"),"GBK");
String n2 = URLDecoder.decode(test, "GBK");
不明白在JS不用做任何事情的情况下
只有使用String n = new String (test.getBytes("ISO-8859-1"),"GBK");
就能得到正确的字符串
不是有说JS是用utf-8来发送信息的么?
如果这里把String n = new String (test.getBytes("ISO-8859-1"),"GBK");中的
GBK换为UTF-8 依然是乱码(包含单独替换和上面的所有涉及到编码地方的替换..)
在参考以下帖子后
[url]http://chenlb.blogjava.net/archive/2007/10/13/152638.html[/url]除非是在发送请求前对URL的编码已经进行了处理 比如encodeURI();一次
在servlet中只需要URLDecoder.decode(url, "UTF-8");就能正确解码