the*_*ses 2 java unicode servlets urldecode
我正在从外部源访问我的 servlet URL。参数之一是具有印地语文本。外部源正在对其进行编码。编码值为。
%E0%A4%AA%E0%A4%BE%E0%A4%A0%E0%A5%8D%E0%A4%AF%20%E0%A4%AD%E0%A4%BE%E0%A4%97
Run Code Online (Sandbox Code Playgroud)
我可以通过wireshark在TCP转储中看到它。但是我没有在 servlet 应用程序中得到这个编码的字符串。我正在尝试通过 getParameter() 方法获取它。它返回一些随机字符。
由于我没有得到正确的值,所以如果我尝试在我的 servlet 类中使用
URLDecoder.decode(myString, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
然后它返回一些随机字符,就像这样 -
विषय वस�त�
Run Code Online (Sandbox Code Playgroud)
请建议我如何在 servlet 中读取此编码文本并将其解码回原始值。
我正在尝试通过 getParameter() 方法获取它。
getParameterServlet 中输入编码的处理通常被破坏。无论您是否需要,您都会获得 ISO-8559-1(您通常不需要)。
您可以通过以下方式解决此问题并为查询字符串参数获取 UTF-8:
特定于容器的配置选项(例如 Tomcat URIEncoding)。
抓取原始数据request.getQueryString()并将其碎片URLDecoder.decode(..., "utf-8")手动传递,而不是依赖getParameter. 只有当你走这条路时,你才需要担心URLDecoder自己。
固定了误解码的getParameter通过编码坏值返回到其来自的原始字节输出(使用ISO-8859-1),然后对其进行解码为UTF-8,例如new String(request.getParameter("param").getBytes("iso-8859-1"), "utf-8")。
有关背景,请参阅此问题。
| 归档时间: |
|
| 查看次数: |
5017 次 |
| 最近记录: |