主要因浏览器到服务器之间的一次编码导致中文在网络传输过程中产生错误。BS通讯的标准为ISO8859-1。直接传送中文肯定是不行。
为了避免这种错误,在BS转换之前之后我们先对内容进行包装(转换)。
例如:
[code="java"]URLEncoder.encode(caseName,"utf-8")[/code]
[code="java"]URLDecoder.decode(new String(caseName.getBytes("iso8859-1"),"utf-8"),"UTF-8");[/code]
在系统中一般都会使用filter进行转换,应尽可能减少编码解码,主要是GBK和utf-8在互转过程中存在如下问题:
如果中文字符串长度是奇数(已全部恢复),转换后可能后变成(已全部恢�?)。
这里解决办法是,编码时直接变成对方需要的字符集。
例如:URLEncoder.encode(caseName,"GBK")
这样在对方就不用解码了。
为了避免这种错误,在BS转换之前之后我们先对内容进行包装(转换)。
例如:
[code="java"]URLEncoder.encode(caseName,"utf-8")[/code]
[code="java"]URLDecoder.decode(new String(caseName.getBytes("iso8859-1"),"utf-8"),"UTF-8");[/code]
在系统中一般都会使用filter进行转换,应尽可能减少编码解码,主要是GBK和utf-8在互转过程中存在如下问题:
如果中文字符串长度是奇数(已全部恢复),转换后可能后变成(已全部恢�?)。
这里解决办法是,编码时直接变成对方需要的字符集。
例如:URLEncoder.encode(caseName,"GBK")
这样在对方就不用解码了。
本文主要探讨了浏览器到服务器间中文传输导致的乱码问题及其解决方案。通过使用URLEncoder.encode和URLDecoder.decode方法,并选择合适的字符集(如GBK或UTF-8),可以有效避免中文在传输过程中的乱码现象。
5327

被折叠的 条评论
为什么被折叠?



