解决乱码:这是我们公司总结的一些关于中文乱码问题的一些解决方案和经验和大家分享!来源: 发布时间:星期四, 2009年2月12日 浏览:153次 评论:0
1.字节和unicode java内核是unicode ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() public ![]() ![]() public ![]() 如果你不指定converter ![]() ![]() ![]() ![]() \"你\" ![]() Stringencoding=\"gb2312\"; ![]() ![]() ![]() ![]() ByteToCharConverterconverter=ByteToCharConverter.getConverter(encoding); charc ![]() for( ![]() ![]() ![]() ![]() } 结果是什么?0x4f60 如果encoding=\"8859_1\" ![]() 如果代码改为 ![]() ![]() ![]() ![]() ByteToCharConverterconverter=ByteToCharConverter.getDefault ![]() charc ![]() for( ![]() ![]() ![]() ![]() } 结果将又是什么?根据平台 ![]() ![]() char——〉 ![]() Stringencoding=\"gb2312\"; charc ![]() CharToByteConverterconverter=CharToByteConverter.getConverter(encoding); ![]() ![]() for( ![]() ![]() ![]() ![]() } 结果是什么?0x00c4,0x00e3 如果encoding=\"8859_1\" ![]() 如果代码改为 Stringencoding=\"gb2312\"; charc ![]() CharToByteConverterconverter=CharToByteConverter.getDefault ![]() ![]() ![]() for( ![]() ![]() ![]() ![]() } 结果将又是什么?根据平台 ![]() ![]() 很多中文问题就是从这两个最简单 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 2.utf-8 utf-8是和unicode ![]() ![]() ![]() ![]() 7位 ![]() 11位 ![]() 16位 ![]() 21位 ![]() 大多数情况是只使用到16位以下 ![]() \"你\" ![]() 0xc4e3 ![]() 1100 ![]() ![]() ![]() 由于只有两位我们按照两位 ![]() ![]() ![]() ![]() ![]() 0x4f60 ![]() 0100 ![]() ![]() ![]() 我们用utf-8补齐 ![]() 1110 ![]() ![]() ![]() ![]() ![]() e4--bd--a0 于是返回:0xe4,0xbd,0xa0 ![]() 3. ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 例如: Stringencoding=“”; ![]() ![]() ![]() ![]() Stringstr= ![]() 如果encoding=8859_1 ![]() ![]() ![]() ![]() 4.Reader,Writer/InputStream,OutputStream Reader和Writer核心是char ![]() ![]() ![]() ![]() ![]() ![]() 例如: 文件test.txt只有 ![]() ![]() Stringencoding=\"gb2312\"; InputStreamReaderreader= ![]() ![]() \"text.txt\"),encoding); charc ![]() ![]() ![]() for( ![]() ![]() ![]() ![]() } 结果是什么?你 如果encoding=\"8859_1\" ![]() ![]() ![]() ![]() 反过来 ![]() ![]() 5.我们要对java ![]() javac?encoding 我们常常没有用到encoding这个参数 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() java ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 例子代码: Stringstr=\"你\"; FileWriterwriter= ![]() write.write(str); writer.close ![]() 如果用gb2312编译 ![]() ![]() 如果用8859_1编译 ![]() ![]() 0000 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 1100 ![]() ![]() ![]() ![]() ![]() ![]() ![]() c1--84-- c3-- a3 你会找到c184c3a3 ![]() 但是我们往往忽略掉这个参数 ![]() ![]() 样例代码在中文平台上编译 ![]() ![]() 样例代码在英文平台上编译 ![]() ![]() (1). zh ![]() (2).en ![]() 原因: (1).在中文平台上编译后 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 但是如果是在英文平台下 ![]() ![]() ![]() ![]() ![]() (2).在英文平台上编译后 ![]() ![]() ![]() ![]() ![]() 在英文平台上 ![]() ![]() ![]() 6.其它原因:<%@pagecontentType=\"text/html;char ![]() 设置浏览器 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 7.发生编码 ![]() 从数据库到java ![]() ![]() 从java ![]() ![]() 从文件到java ![]() ![]() 从java ![]() ![]() 从java ![]() ![]() 从页面form提交数据到java ![]() ![]() 从流到java ![]() ![]() 从java ![]() ![]() 谢志钢 ![]() 我是使用配置过滤器 ![]() ![]() <web-app> <filter> <filter-name>RequestFilter</filter-name> <filter- ![]() ![]() <init-param> <param-name>char ![]() <param-value>gb2312</param-value> </init-param> </filter> <filter-mapping> <filter-name>RequestFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> </web-app> publicvoiddoFilter(ServletRequestreq,ServletResponseres, FilterChainfChain)throwsIOException,ServletException{ HttpServletRequestrequest=(HttpServletRequest)req; HttpServletResponseresponse=(HttpServletResponse)res; HttpSessionsession=request.getSession ![]() StringuserId=(String)session.getAttribute(\"userid\"); req. ![]() ![]() ![]() 实际上是设置了 ![]() ![]() try{ ![]() ![]() ![]() ![]() ![]() \".*/uirs/logon/logon(Controller){0,1}\\\\x2Ejsp$\")){ session.invalidate ![]() response.sendRedirect(request.getContextPath ![]() \"/uirs/logon/logon.jsp\"); } } ![]() ![]() ![]() net.golden.uirs.util.UirsChecker.ACTION_DO)){ ![]() ![]() ![]() \".*/uirs/logon/logon(Controller){0,1}\\\\x2Ejsp$\")){ response.sendRedirect(request.getContextPath ![]() \"/uirs/logon/logonController.jsp\"); } } } } catch(Exceptionex){ response.sendRedirect(request.getContextPath ![]() \"/uirs/logon/logon.jsp\"); } fChain.doFilter(req,res); } 0
相关文章读者评论发表评论 |
|