第一部分:? jsp? ---> java/servlet
對于流行的Tomcat來說,有以下三種解決方法:
1) 更改 D:\Tomcat\conf\server.xml,指定瀏覽器的編碼格式為“簡體中文”:
方法是找到 server.xml 中的
??? <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
??? enableLookups="false" redirectPort="8443" acceptCount="100"
??? connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />
標記,粗體字是我添加的。
可以這樣驗證你的更改是否成功:在更改前,在你出現亂碼的頁面的IE瀏覽器,點擊菜單“查看|編碼”,會發現“西歐(ISO)”處于選中狀態。而更改后,點擊菜單“查看|編碼”,會發現“簡體中文(GB2312)”處于選中狀態。注意你的Tomcat的common下要有"endorsed"和"i18n"文件夾,其中包含編碼所需的lib
???
2)更該 Java 程序,
?public class ThreeParams extends HttpServlet {
? public void doGet(HttpServletRequest request, HttpServletResponse response)
?? throws ServletException, IOException {
????? response.setContentType("text/html; charset=GBK");
????? ...
? }?
}
粗體字是必需要有的,它的作用是讓瀏覽器把Unicode字符轉換為GBK字符。這樣頁面的內容和瀏覽器的顯示模式都設成了GBK,就不會亂碼了。
??
第二部分??? java/servlet?? ---->?? mysql
mysql和Hibernate中的中文問題解決方法
另一種解決方法(mysql-4.1.11).低版本的mysql似乎沒出現過中文問題(mysql-4.0.17). :)
1.添加一個過濾器,將字符集編碼設為GBK.
修改web.xml:
?<filter>
??<filter-name>SetCharacterEncoding</filter-name>
??<filter-class>hxz.filter.SetEncodingFilter</filter-class>
??<init-param>
???<param-name>encoding</param-name>
???<param-value>GBK</param-value>
??</init-param>
?</filter>
?
?<filter-mapping>
??<filter-name>SetCharacterEncoding</filter-name>
??<url-pattern>/*</url-pattern>
?</filter-mapping>
新建一個過濾器:
package hxz.filter;
import java.io.IOException;
import javax.servlet.*;
public class SetEncodingFilter implements Filter {
?
?// default character encoding
?String defaultEncoding = "GBK";?
?
?public void init(FilterConfig config) throws ServletException {
??String encoding = config.getInitParameter("encoding");
??if (encoding != null) {
???defaultEncoding = encoding;
??}
?}
?public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
??request.setCharacterEncoding(defaultEncoding);
??chain.doFilter(request, response);
?}
?public void destroy() {
??defaultEncoding = null;
?}
}
2.修改hibernate配置文件:
<property name="url">
? <value>jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GBK</value>
</property>
注意后面的:useUnicode=true&characterEncoding=GBK, 在xml中&要改為;amp;
3.在新版本中mysql建表時,你可以選擇一種字符集,將它設為GBK.
jsp或servlet中把字符集改為GBK.
?