Mem*_*eak 2 java string character-encoding
我真的对java的字符串编码感到气馁.其中有很多自动转换.我找不到常规的.谁有好主意?例如:在jsp页面中,它有这样的链接
http://localhost:8080/helloworld/hello?world=??
Run Code Online (Sandbox Code Playgroud)
然后我们需要处理它,所以我们这样做:
String a = new String(request.getParameter("world").toString().getBytes("ISO-8859-1"),
"UTF-8");
a = "http://localhost/" + a;
Run Code Online (Sandbox Code Playgroud)
当我调试它时,我发现它是正确的.
然后我将它传递给一个会话对象:request.getSession().setAttribute("hello",a);
后来在一个编码为"Big5"的jsp页面中,我尝试获取属性和显示,并且我发现字符"凹ㄉ"已损坏.
我怎么解决这个问题?
Yis*_*hai 12
这不是你在字符集之间转换的方式.你需要担心的是这部分:
request.getParameter("world").toString().getBytes("ISO-8859-1")
Run Code Online (Sandbox Code Playgroud)
一旦将其作为字符串,它将在内部存储为16位unicode.将它作为字节然后告诉java将这些字节视为UTF-8并不会有任何好处.
如果你发现它没问题,那只是巧合.一旦你调用了getParameter("world").toString(),就会得到你的unicode字符串.进一步的解码和编码只会破坏某些字符,它恰好不会打破你的.
问题是你如何获得该属性以便稍后显示?你说jsp页面的编码不是unicode,而是Big5,所以你要做什么才能从属性映射中获取该字符串并将其放在该页面上?这可能是问题的根源.鉴于在获取参数时如何处理字符转换的误解,可能在Big5页面上也存在一些错误.
顺便问一下,你真的需要使用Big5吗?UTF-16会工作(如果不是UTF-8)吗?它当然可以消除一些头痛.
| 归档时间: |
|
| 查看次数: |
40942 次 |
| 最近记录: |