主要因浏览器到服务器之间的一次编码导致中文在网络传输过程中产生错误。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")
这样在对方就不用解码了。