|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
JAVA常见中文问题的解决方式 以下解决方案是笔者在日常生活中碰到的,希望能对你解决JAVA中文问题有所帮助。 1.在jsp页面首部加上<%@page contentType=”text/html;charset=GB2312“%> 在servlet中使用httpServlerResponse.setContentTpye(“text/html; charset=GB2312”);可以避免一些中文问题 2.使用JDBC连接mysql数据库时,连接字符串写成如下形式可以避免一些中文问题: jdbc://mysql://hostname:port/DBname?user=username&password=pwd& useUnicode=true&characterEncoding= iso-8859-1 假如是以数据源的方法连接数据库在配置文件中使用: <parameter> <name>url</name> <value>jdbc:mysql://hostname:port/DBname? &useUnicode=true&characterEncoding=iso-8859-1</value> </parameter> 注重要使用&替换&符号,否则XML文件在解析的时候会出错。 3.从数据库读出的数据有可能是乱码,碰到这种问题可以用如下方式解决: String desc = rs.getString(“desc”); desc = new String(desc.getBytes(“ISO-8859-1”),”GB2312”); 4.某个页面提交中文内容给Servlet,Servlet要对提交的内容进行转码工作才能准确接收数据, 通常我们是在servlet中增加以下代码来解决问题。 httpServlerRequest.setCharacterEncoding(“GB2312”); 5. 在struts中,对资源文件进行转码,使用JDK字带的转码工具: >native2ascii -encoding BG2312 Myresource.properties Myresource_zh.properties 6.在struts中扩展org.apache.struts.action.RequestProcessor类,并覆写其中的processPreprocess()方式: package com.mypro.action; public class MyProRequestProcessor extends RequestProcessor { protected boolean processPreprocess (HttpServletRequest request, HttpServletResponse response) { try { request.setCharacterEncoding(“GB2312”); //other code } catch(Exception e){} return true; } } 写完上面代码别忘了修改struts-config.xml: <controller processorClass=” com.mypro.action.MyProRequestProcessor”/> 7. 用filter实现(推荐) package com.kefeiannan; import java.io.IOException; import javax.servlet.*; public class SetCharacterEncodingFilter implements Filter { protected String encoding = null; protected FilterConfig filterConfig = null; protected boolean ignore = true; public void destroy() { this.encoding = null; this.filterConfig = null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (ignore || (request.getCharacterEncoding() == null)) { String encoding = selectEncoding(request); if (encoding != null) request.setCharacterEncoding(encoding); } chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter("encoding"); String value = filterConfig.getInitParameter("ignore"); if (value == null) this.ignore = true; else if (value.equalsIgnoreCase("true")) this.ignore = true; else if (value.equalsIgnoreCase("yes")) this.ignore = true; else this.ignore = false; } protected String selectEncoding(ServletRequest request) { return (this.encoding); } } 配置你站点下的web.xml,在<web-app>后面加上 <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>com.kefeiannan.SetCharacterEncodingFilter</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> 返回类别: 教程 上一教程: JSP教程(五)-JSP ACTIONS的使用下 下一教程: 几则JSP入门知识总结 您可以阅读与"JAVA常见中文问题的解决方案"相关的教程: · JDK1.2关于JDBC中文问题的解决方案 · Java 关于中文乱码问题的解决方案与经验 (2) · JDK1.2关于JDBC中文问题的解决方案 · Java 关于中文乱码问题的解决方案与经验 · JSP显示中文问题的解决方案 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |