NO.31 Html,Jsp,Rtf中文乱码解决方法大搜集
2010-05-19 16:45
423 查看
<meta http-equiv='Content-Type' content='text/html; charset=GBK'>
知识库总目录: No.0
WebApplication开发知识库
目前已总结Html、Jsp、Rtf的中文乱码解决方法,继续搜集中......(本文涉及字符集的均以GBK为例)
1.html中文乱码?
在head区加入此句即可
2.JSP中文乱码?
行首可有此行?
<%@ page contentType="text/html; charset=GBK"%>
3.使了上面一招JSP还显示乱码?
OK,该经典的SetCharacterEncodingFilter上场了:)
package amosryan.web.control; import java.io.IOException; import javax.servlet.*; public class SetCharacterEncodingFilter implements Filter { protected String encoding; protected FilterConfig filterConfig; protected boolean ignore; public SetCharacterEncodingFilter() { encoding = null; filterConfig = null; ignore = true; } public void destroy() { encoding = null; filterConfig = null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (ignore || request.getCharacterEncoding() == null) { String encode = selectEncoding(request); if (encode != null) request.setCharacterEncoding(encode); } chain.doFilter(request, response); } public void init(FilterConfig filterConfig2) throws ServletException { filterConfig = filterConfig2; encoding = filterConfig2.getInitParameter("encoding"); String value = filterConfig2.getInitParameter("ignore"); if (value == null) ignore = true; else if (value.equalsIgnoreCase("true")) ignore = true; else if (value.equalsIgnoreCase("yes")) ignore = true; else ignore = false; } protected String selectEncoding(ServletRequest request) { return encoding; } }
web.xml中的配置
<filter> <filter-name>Set Character Encoding</filter-name> <filter-class> amosryan.web.control.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>ignore</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
4.写RTF中文乱码?
用这个方法过滤下
private static final String LINE_BREAK = "{\\rtlch\\fcs1 \\af0 \\ltrch\\fcs0 \\loch\\af0\\hich\\af0\\dbch\\af31505\\insrsid15663546 \\par }"; private static final String CN_HEAD = "\\loch\\af0\\hich\\af0\\dbch\\f31505"; private static char[] digital = "0123456789ABCDEF".toCharArray(); /** * 字符串转换为rtf编码 * * @param content * @return */ public static String strToRtf(String content) throws Exception { if (content == null) { return ""; } boolean includeChinese = false; StringBuilder sb = new StringBuilder(1024); for (char c : content.toCharArray()) { if (!includeChinese) { int intC = (int) c; if (intC > 256) { includeChinese = true; } } sb.append(convert(c)); } if (includeChinese) { sb.insert(0, CN_HEAD); } String rtfStr = sb.toString(); rtfStr = rtfStr.replace("\\'0D\\'0A", LINE_BREAK); return rtfStr; } private static String convert(char c) throws Exception { byte[] bs = String.valueOf(c).getBytes("GBK"); StringBuilder sb = new StringBuilder(256); for (int i = 0; i < bs.length; i++) { int bit = (bs[i] & 0x0f0) >> 4; sb.append("\\'"); sb.append(digital[bit]); bit = bs[i] & 0x0f; sb.append(digital[bit]); } return sb.toString(); }
相关文章推荐
- html/jsp中文显示乱码解决方法
- JSP中获取HTML中的中文内容是乱码的解决方法---开发中遇到的问题
- jsp页面包含含有中文的html页面出现乱码的解决方法
- JSP HTML 各种 乱码 解决方法|jsp include html乱码|include 乱码|MyEclipse 中文乱码
- jsp页面包含含有中文的html页面出现乱码的解决方法(转载)
- html改jsp出现中文乱码解决(及jsp相关问题解决)
- jsp用过滤器解决中文乱码问题的方法
- JSP中文乱码问题解决方法小结
- jsp传值中文乱码问题解决方法示例介绍
- jsp中文乱码终极解决方法(转)
- JSP、AJax中文乱码问题解决,escape(), encodeURI(), encodeURIComponent(),js对参数连续两次调用 encodeURI(String) 方法
- JSP页面表单提交时出现中文乱码的解决方法
- JSP带中文请求参数乱码的解决方法
- jsp页面显示及数据库中文乱码问题解决方法
- 常见JSP中文乱码例子及其解决方法
- 一般jsp传递中文乱码的可行解决方法
- jsp带中文请求参数的乱码问题的解决方法
- 今天使用jspsmartupload.jar实现上传文件的功能,发现中文乱码,于是总结了下解决方法
- MyEclipse和tomcat结合编写jsp对于中文乱码的解决方法
- 分享JSP中文乱码解决方法