如何用JavaScript将URL中的非ascii字符参数传递给JSP/Servlet
How to pass a parameter with non-ASCII characters in URL with JavaScript to JSP/Servlet?
我在网上看过很多类似的问题,但没有一个解决方案对我的情况有帮助。我实现网页搜索,当查询可以是希伯来语,英语或任何其他语言。当用户单击"search"时,我使用JavaScript获取字段中的值,并使用Ajax显示结果。当用户单击"search"时,JavaScript函数向我的JSP文件发送一个新的请求,当查询作为参数发送时。
你知道怎么修理它吗?
JavaScript中的相关行:
...
request = new XMLHttpRequest();
var url = "SearchResults.jsp?userID=" + userID + "&query=" + encodeURIComponent(query);
alert("The query = " + query);
alert("The url = " + url);
request.open("GET", url, true);
...
第一个警报正确显示希伯来语,第二个警报显示查询参数用%%..编码时的url。当我把它粘贴到谷歌搜索中它会正确地用希伯来语写这个词
服务器中的相关行:
...
String userID = request.getParameter("userID");
FbLogger.fbLogger.info(request.getParameter("query"));
String query = URLDecoder.decode(request.getParameter("query"), "UTF-8");
FbLogger.fbLogger.info("Entered as Manager with Params: userID = " + userID + " , query = " + query);
...
我看到查询为×?שר×?×?在我的日志中,对于上面的2条消息,userID是正确传递的。
在每一页我添加:
<%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=charset=UTF-8">
<script language="javascript" type="text/javascript" charset="utf-8" src="javascript/friendsSearch.js"></script>
我还更改了Tomcat服务器(server.xml)中的配置:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
使用连接器属性仅request.getParameter("query")
就足够了。如果它不工作,那么<Connector>
标签中的URIEncoding="UTF-8"
没有任何作用。
请注意,您通过直接记录字符串增加了额外的复杂性步骤,记录器输出编码和日志阅读器也需要编码/解码步骤。相反,搜索ל
并记录结果"ל".equals(request.getParameter("query"))
,它将是true
或false
,并且只需要考虑URIEncoding。
尝试将port="1337"
应用于相同的<Connector>
标记,看看您的服务器是否可以从localhost:1337
工作。如果它从:1337
工作,尝试在希伯来语再次搜索。
相关文章:
- 函数未将值作为参数传递
- 如何将参数传递到angularJs中的工厂
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- JavaScript常量-作为参数传递或直接使用
- 如何将javascript对象作为参数传递到c#web服务中
- 将参数传递给函数
- 如何将Gruntfile.js中的参数传递到webdriverio规范
- javascript,将参数传递给函数内部的闭包中的回调
- Javascript-将包含变量的html字符串作为参数传递
- 将字符串作为参数传递给函数onclick event jquery
- 将修改后的数组作为参数传递给函数
- 在嵌套递归指令中将参数传递给父控制器方法
- each()-将额外的参数传递给回调参数
- 代码气味-将布尔控制参数传递给函数
- 如何将自定义参数传递到FullCalendar事件提要
- 将参数传递给函数,同时保留事件处理程序
- 将图标作为参数传递不会;t工作-谷歌地图
- 如何使用按钮将参数传递给函数
- 将带有字母字符的字符串参数传递给无法工作的javascript函数
- Angularjs:如何传递";字符转换为$resource的参数