繁体   English   中英

Java处理特殊字符请求参数

[英]Java handle special characters request parameters

我在Flex-Java(Client-Server)应用程序上工作,却遇到了问题。 or . 我发送到服务器路径参数并在JSP上接收它们,有时,这些参数具有特殊字符,如 我有一个普遍的问题,我的服务器上收到的那些特殊字符错误。

我还检查出有喜欢同样isuue另一个问题, 这一个这其他

我已经尝试使用request.setCharacterEncoding("UTF-8")来接收参数(第一个问题的答案)。

我还尝试在server.xml文件中检查服务器(Apache Tomcat 7.0.34.0)的配置,并确保端口8080的节点具有URIEncoding="UTF-8"属性(第二个问题的答案)。

我什至尝试阅读以下参数:

String paramTest1 = (new String(request.getParameter("paramTest").getBytes("ISO-8859-1"),"UTF-8")); String paramTest2 = (new String(request.getParameter("paramTest").getBytes("UTF-8")));

调试我的应用程序时,我意识到URI可以被很好地接受,问题出在我从请求中读取参数的那一刻。

索取详细资料

目前,我通过传统方式接收参数,即我的JSP代码:

<%@page contentType="text/html" pageEncoding="UTF-8" language = "java"%>
<%
request.setCharacterEncoding("UTF-8");
String paramTest = request.getParameter("paramTest");
String paramTest1 = (new String(request.getParameter("paramTest").getBytes("ISO-8859-1"),"UTF-8"));
String paramTest2 = (new String(request.getParameter("paramTest").getBytes("UTF-8")));
%>

如图像中所示,我为paramTest参数发送了字符串“1234acentoáéíóúeñe”。 我的var获取参数的值是:

paramTest = 1234acento�����
paramTest1 = 1234acento?????
paramTest2 = 1234acento�����

而且我需要接收与Im发送的字符完全相同的字符。

不知道说什么重要,但是在Flex方面,对于URLRequest对象Im为requestHeaders Araray指定了URLRequestHeader对象("Content-Type", "text/html;charset=UTF-8") 这对我来说没有帮助。

任何意见或答案是很好的赞赏。

谢谢。

也许这是一种过时的技术,但对于仍在as4(flex)上编写代码的人可能有用。

我意识到只有当我从flex发送的请求是一个文件请求(用于上传文件)时,才能对特殊字符进行很好的编码,如果这些字符是与普通请求一起发送的(POST参数请求),则该request.setCharacterEncoding("UTF-8"); 足以正确编码和读取参数。

因此,当请求为fileRequest时,必须将参数作为FileReference的URLRequest参数上的URI参数发送,这就是为什么参数在URI上看起来不错但无法在服务器上读取的原因。

好吧好吧,讨论太多了,因此,用于在客户端对加引号的字符进行编码的代码是:

public static function encodeQuotes(s:String):String {
    return s.replace("á", "%C3%A1").replace("é", "%C3%A9").replace("í", "%C3%AD").replace("ó", "%C3%B3").replace("ú", "%C3%BA").replace("ñ", "%C3%B1").
        replace("Á", "%C3%81").replace("É", "%C3%89").replace("Í", "%C3%8D").replace("Ó", "%C3%93").replace("Ú", "%C3%9A").replace("Ñ", "%C3%91");
}

然后,您可以使用相同的request.setCharacterEncoding("UTF-8");在服务器端读取参数request.setCharacterEncoding("UTF-8");

还将utf-8编码(而不是iso-8859 getBytes ()使用getBytes ()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM