这几天学习了一下JSP。用Eclipse3.3 + Tomcat6 。
动手做了一下。结果被中文乱码难了两天(网上一搜才知道这是JSP初学者很难解决的问题)。自已总结一下。
1 . 在Html和jsp文件<head>中加入 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
2
Tomcat6的 server.xml 中修改<conector>段为: <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"
URIEncoding="UTF-8"
reloadable="true" />
一定要看清楚<conector>段,因为它里有很多,其中有些是被注释了的。我就是因此而改错了地方,花了不少的时间。
3
Jsp工程中的WebContent目录下 web.xml 加入:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilt
er</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4 Jsp工程中的WebContent目录下,新建classes文件夹,并在classes文件中新建filters文件夹。 并把Tomcate安装目录下的webapps\examples\WEB-INF\classes\filters\ SetCharacterEncodingFilt
er.class 拷到你新建的filters文件夹中。
经过上述几步如jsp的get 和 post 方法,均不会产生乱码。只是如果用的get方法,地址栏上显示的为乱码,不会对接收的jsp文件产生影响。
5 但地栏如果直接输入“1.jsp?username=杨” 就不正确了之 ,所以像<a herf=1.jsp?username=杨>超链示例</a> 也是错的。只能用下面的方法
<a herf=1.jsp?username=<%=URLEncoder.encode(“杨”,”UTF-8”)%>>超链示例</a>
不知道,有没有更好的方法。
后记(对5项):
Google的地址栏就不一样。它可以在地址栏中直接输入中文, 也可是编码后的字符。
http://www.google.cn/search?hl=zh-CN&q=%E6%9D%A8&meta=&aq=f&oq=
或
http://www.google.cn/search?hl=zh-CN&q=杨&meta=&aq=f&oq=
都行,不知它是怎么搞的^_^。
动手做了一下。结果被中文乱码难了两天(网上一搜才知道这是JSP初学者很难解决的问题)。自已总结一下。
1 . 在Html和jsp文件<head>中加入 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
2
一定要看清楚<conector>段,因为它里有很多,其中有些是被注释了的。我就是因此而改错了地方,花了不少的时间。
3
<filter-mapping>
</filter-mapping>
4 Jsp工程中的WebContent目录下,新建classes文件夹,并在classes文件中新建filters文件夹。 并把Tomcate安装目录下的webapps\examples\WEB-INF\classes\filters\ SetCharacterEncodingFilt
经过上述几步如jsp的get 和 post 方法,均不会产生乱码。只是如果用的get方法,地址栏上显示的为乱码,不会对接收的jsp文件产生影响。
5 但地栏如果直接输入“1.jsp?username=杨” 就不正确了之 ,所以像<a herf=1.jsp?username=杨>超链示例</a> 也是错的。只能用下面的方法
<a herf=1.jsp?username=<%=URLEncoder.encode(“杨”,”UTF-8”)%>>超链示例</a>
不知道,有没有更好的方法。
后记(对5项):
Google的地址栏就不一样。它可以在地址栏中直接输入中文, 也可是编码后的字符。
http://www.google.cn/search?hl=zh-CN&q=%E6%9D%A8&meta=&aq=f&oq=
或
http://www.google.cn/search?hl=zh-CN&q=杨&meta=&aq=f&oq=
都行,不知它是怎么搞的^_^。