Car*_*gro 36 java encoding utf-8 httprequest
我看到很多像我一样的问题,但没有一个答案有效...这就是事情:我想从请求中获取我的参数(带重音的字符),但它不起作用.我试过用户,request.setCharacterEncoding( "UTF-8" )但它也没用.
我知道URLDecoder.decode( request.getQueryString(), "UTF-8" )返回权限字符但request.getParameterValues()不起作用!有没有人有想法?
谢谢
VGR*_*VGR 40
保罗的建议似乎是最好的行动方案,但如果你要解决它,你根本不需要URLEncoder或URLDecoder:
String item = request.getParameter("param");
byte[] bytes = item.getBytes(StandardCharsets.ISO_8859_1);
item = new String(bytes, StandardCharsets.UTF_8);
// Java 6:
// byte[] bytes = item.getBytes("ISO-8859-1");
// item = new String(bytes, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
更新:由于获得了很多选票,我想强调BalusC的观点,即这绝对不是解决方案; 这是最好的解决方法.人们不应该这样做.
我不确切知道是什么导致了原始问题,但我怀疑URL已经是UTF-8编码,然后再次进行UTF-8编码.
Pau*_*gas 26
如果您使用的是Apache Tomcat,则request.setCharacterEncoding("UTF-8")仅适用于POST请求.
对于GET请求,您需要添加URIEncoding="UTF-8"在你<Connector>在server.xml.
在FAQ/CharacterEncoding中查看更多内容- Tomcat Wiki.
好吧,我找到了一种方法来解决我的问题,我想这不是更好的解决方案,但确实有效..
String item = request.getParameterValues("param"); // Hélène
item = URLEncoder.encode( model.getNameItem(), "ISO-8859-1" ); // H%C3%A9l%C3%A8ne
item = URLDecoder.decode( item, "UTF-8" ); // and finally : Hélène
Run Code Online (Sandbox Code Playgroud)
如果它可以帮助其他人,我很乐意帮助:)
PS:保罗,我没有早点回答你,但我已经做过那些事.无论如何,谢谢你的帮助.
| 归档时间: |
|
| 查看次数: |
57781 次 |
| 最近记录: |