Javascript get方法JSP中的参数解码问题

Javascript get方法JSP中的参数解码问题,javascript,jsp,unicode,character-encoding,get,Javascript,Jsp,Unicode,Character Encoding,Get,这里介绍如何调用jsp页面 eventMap.jsp?venue=%C4%B0ndigo 这是eventMap.jsp中的一行,我从中获得场地参数: var venue="<%= URLDecoder.decode(request.getParameter("venue"),"UTF-8") %>"; 如何在jsp页面中正确使用编码以正确获得解码值(İngido) 编辑: 整张eventMap.jsp <!DOCTYPE html> <%@ page langu

这里介绍如何调用jsp页面

eventMap.jsp?venue=%C4%B0ndigo
这是eventMap.jsp中的一行,我从中获得场地参数:

var venue="<%= URLDecoder.decode(request.getParameter("venue"),"UTF-8") %>";
如何在jsp页面中正确使用编码以正确获得解码值(İngido)

编辑: 整张eventMap.jsp

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.net.URLDecoder"%>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Event on Map></title>
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" charset="UTF-8">
  function initialize() {
    <% request.setCharacterEncoding("UTF-8"); %> 
    var lat=<%= request.getParameter("lat") %>;
    var lng=<%= request.getParameter("lng") %>;
    var venue="<%= URLDecoder.decode(request.getParameter("venue"),"UTF-8") %>";

    var myLatlng = new google.maps.LatLng(lat,lng);
    var myOptions = {
      zoom: 15,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    var marker = new google.maps.Marker({
        position: myLatlng, 
        map: map,
        title:"Hello"
    });   

    var infowindow = new google.maps.InfoWindow({ content: venue, size: new google.maps.Size(50,50)});
        google.maps.event.addListener(marker, 'click', function() {
        infowindow.open(map,marker);
    });

  }
</script>
</head>
<body onload="initialize()">
  <div id="map_canvas"></div>
</body>

</html>

地图上的活动>
函数初始化(){
var-lat=;
var lng=;
var地点=”;
var mylatng=new google.maps.LatLng(lat,lng);
变量myOptions={
缩放:15,
中心:myLatlng,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
var map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
var marker=new google.maps.marker({
职位:myLatlng,
地图:地图,
标题:“你好”
});   
var infowindow=new google.maps.infowindow({内容:地点,大小:new google.maps.size(50,50)});
google.maps.event.addListener(标记'click',函数(){
信息窗口。打开(地图、标记);
});
}
Firebug结果:

<!DOCTYPE html>
2
3
4<html>
5<head>
6<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
7<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
8<title>Event on Map</title>
9<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
10<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
11<script type="text/javascript" charset="UTF-8">
12 function initialize() {
13 var lat=41.062786;
14 var lng=28.981934;
15 var venue="Ä°Tà Kültür Sanat BirliÄi (KSB) Binası Küçük Salon (Maslak)";
16
17 var myLatlng = new google.maps.LatLng(lat,lng);
18 var myOptions = {
19 zoom: 15,
20 center: myLatlng,
21 mapTypeId: google.maps.MapTypeId.ROADMAP
22 }
23 var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
24
25 var marker = new google.maps.Marker({
26 position: myLatlng,
27 map: map,
28 title:"Hello"
29 });
30
31 var infowindow = new google.maps.InfoWindow({ content: venue, size: new google.maps.Size(50,50)});
32 google.maps.event.addListener(marker, 'click', function() {
33 infowindow.open(map,marker);
34 });
35
36 }
37</script>
38</head>
39<body onload="initialize()">
40 <div id="map_canvas"></div>
41</body>
42
43</html> 

2.
3.
4.
5.
6.
7.
8地图上的事件
9
10
11
12函数初始化(){
13 var lat=41.062786;
14乏液化天然气=28.981934;
15 var VINCE=“TÃKültür Sanat BirliÄi(KSB)BinasÄ”±Kü§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§;
16
17 var mylatng=新的google.maps.LatLng(lat,lng);
18个变量选项={
19:15,
20中心:myLatlng,
21 mapTypeId:google.maps.mapTypeId.ROADMAP
22 }
23 var map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
24
25 var marker=新的google.maps.marker({
26位置:myLatlng,
27地图:地图,
28题:“你好”
29 });
30
31 var infowindow=new google.maps.infowindow({内容:地点,大小:new google.maps.size(50,50)});
32 google.maps.event.addListener(标记'click',函数(){
33信息窗口。打开(地图、标记);
34 });
35
36 }
37
38
39
40
41
42
43

您的JSP头是什么样子的

确保上面写的是:

<%@ page contentType="text/xhtml;charset=UTF-8"%>


您还可以检查调用JSP时得到的HTTP头。确保您的响应是UTF-8编码的。

可能此方法覆盖了错误的编码: 请求。setCharacterEncoding(“UTF-8”)

您可能应该检查JSP头或请求头中使用的编码


Charlie

GET查询字符串的解码由servletcontainer处理,而不是由ServletAPI处理。不清楚您使用的是哪个servletcontainer,所以我无法给出详细的答案。例如,在Tomcat中,它是通过
/conf/server.xml
元素中的
URIEncoding
属性实现的

<Connector URIEncoding="UTF-8">
另见:

您是否尝试过FIREBUG访问您的JSP?编码是什么样子的?关键是
pageEncoding
属性,而不是
contentType
属性。这只适用于请求正文中的POST查询字符串,而不适用于请求URL中的GET查询字符串。是的,现在它可以工作了,但如果我无法访问服务器配置文件,该怎么办?请确保您选择了一个支持良好的体面主机,并告知它是否设置为UTF-8。否则,您必须借助
过滤器
HttpServletRequestWrapper
手动解析
request.getQueryString()
<Connector URIEncoding="UTF-8">
var lat = ${fn:escapeXml(param.lat)};
var lng = ${fn:escapeXml(param.lng)};
var venue = "${fn:escapeXml(param.venue)}";