我正在开发Flex-Java(客户端 - 服务器)应用程序,我遇到了问题。 我发送到服务器路径参数并在JSP上接收它们,有时,这些参数有特殊字符,如áéíóú或ñ。 我认为这是一个常见问题,我的服务器上收到了那些特殊字符。
我还检查了其他问题,例如this one或this other。
我已经尝试使用request.setCharacterEncoding("UTF-8")
来接收参数(第一个问题的答案)。
我还尝试在server.xml文件上检查我的服务器配置(Apache Tomcat 7.0.34.0),并确保端口8080的节点具有URIEncoding="UTF-8"
属性(从第二个问题回答)。 / p>
我甚至尝试过读这个参数:
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")));
%>
因为图像可以是apreciated我发送字符串“1234acentoáéíóúeñe”为paramTest参数。获得参数的我的变量值是:
paramTest = 1234acento�����
paramTest1 = 1234acento?????
paramTest2 = 1234acento�����
我需要收到与我发送完全相同的字符。
不知道在Flex方面说是否重要,对于URLRequest对象,我为requestHeaders Araray指定了一个URLRequestHeader对象("Content-Type", "text/html;charset=UTF-8")
。这不符合我的目的。
任何评论或回答都表示赞赏。
感谢。
答案 0 :(得分:1)
也许这是一项过于陈旧的技术,但对于那些仍在as4(flex)上编写代码的人来说可能是有用的。
我意识到只有当我从flex发送的请求是文件请求(用于上传文件)时,如果用普通请求发送的字符(POST参数请求)那么特殊字符才能很好地编码request.setCharacterEncoding("UTF-8");
足以正确编码和读取参数。
因此,当请求是fileRequest时,参数必须作为URI参数发送到FileReference的URLRequest参数上,这就是为什么URI上的参数看起来不错但无法在服务器上读取。< / p>
好的,太多了,所以,在客户端编码引用字符的代码是:
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");
读取服务器端的参数。
答案 1 :(得分:0)
getBytes ()
也使用utf-8
编码而不是iso-8859。