<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="index.jsp" >
<input type="text" name="txt">
<input type="submit" name="btn" value="Enter">
</form>
<%if (request.getParameter("txt")!=null) out.print(request.getParameter("txt")); %>
</body>
</html>
加载此页面并输入像Sasan
这样的拉丁字时,它会重新显示Sasan
,这是正常的。
但是当输入像ساسان
这样的波斯语单词时,它会重新显示سÙاÙ
而不是ساسان
。
这是如何引起的?如何解决?
答案 0 :(得分:0)
您的表单正在发送GET请求。包含GET查询字符串的整个请求URI由servletcontainer处理。您需要在servletcontainer配置中设置请求URI编码。目前还不清楚你正在使用哪一个,但是在例如Tomcat的情况下,你需要打开/conf/server.xml
,找到<Connector>
元素并为其添加URIEncoding
属性,其值为{ {1}}。
UTF-8
其他servletcontainer有自己的配置设置。
请注意,当您发送POST请求时,servlet API会处理整个请求正文。在获得第一个参数之前,您需要按<Connector ... URIEncoding="UTF-8">
设置请求正文编码。
ServletRequest#setCharacterEncoding()
通常的做法是在request.setCharacterEncoding("UTF-8");
中执行此工作。
我也会将您的JSP Filter
从pageEncoding
更改为utf-8
,只是为了保持一致。
答案 1 :(得分:0)
我之前遇到过这个问题。我在浏览时正确地在JSP网页中显示Farsi字符的一种简单方法是:
步骤1:将文件保存在Eclipse IDE中 保存期间您可能会看到此警告:(见下图)
因此,要保存文件,您必须选择&#34;另存为UTF-8&#34;
步骤2:使用记事本编辑器打开页面文件,然后单击&#34;另存为...&#34; :(见下图)
然后选择&#34; UTF-8&#34;作为文件的编码:(见下图)
然后点击&#34;保存&#34;按钮保存文件。现在,您应该正确浏览JSP页面,并使用正确格式显示的Farsi字符。