我有一个.jsp页面,它向另一个.jsp页面发出ajax请求。查询参数包含日语字符。通过查看字符正确传递的请求,我已经确认。但是,另一端未正确接收到该字符串。
这些是文件:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
url = "ajaxHandler.jsp";
$.ajax({
type : "GET",
url : url,
data: { parameter : "\u306f" },
dataType : "html", //expect html to be returned
success : function(response) {
console.log("successful query");
}
});
});
</script>
</head>
<body>
ajaxHandler.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String val = request.getParameter("parameter");
%>
<br>
<%=val %>
当我点击网址“ https:... / ajaxHandler.jsp?parameter =%E3%81%AF”时,将显示一个完全不同的字符。
我怀疑页面的字符编码有问题。我已经尝试过使用“ utf-8”,现在尝试使用“ shift-jis”,但是仍然无法显示该字符串。
所以我想基本了解为什么我们要指定字符集以及如何在这里使用它。还请告诉我如何获取字符串。
PS:“ \ u306f”是实际的日语字符,在日食中显示,而不是此处的unicode。
最佳答案
编辑位于tomcat conf文件夹中的server.xml文件。
根据相关的连接器,将URIEncoding
指定为UTF-8
例如,我正在使用https
连接器,因此server.xml
中的连接器配置如下所示:
更新server.xml
后,重新启动Tomcat。
而已。