解决乱码的方法(转)
文章分类:Web前端
出现乱码怎么办,解决乱码的方法一,出现乱码的原因分析
1,保存文件时候,文件有自己的文件编码,就是汉字,或者其他国语言,以什么编码来存储
2,输出的时候,要给内容指定编码,如以网页的形势输入时<meta http-equiv=”Content-Type” content=”text/html; charset=utf8″ />
3,从数据库取出数据时,搞不清楚数据库,设置的字符集
4,以汉字为例,汉字本来也有编码的,一个汉字gbk要二个字符,而utf8要三个字符
上面说了有可能引起乱码的潜在原因,我现在把它们排列组合一下。
第一种情况,保存文件和显示编码的不一致
假如保存文件时候,你用的utf8编码,网页输出时,你设置的是gbk编码,这样就会出现乱码,
第二种情况,保存文件和数据库的存储的字符不一致
假如,保存文件的编码和网页显示的编码一样时,还是出现乱码了,例如,你保存文件时,用的utf8编码,而你数据库用的是gb2312字符集来存储数据。
第三种情况,已经乱码了,你还认为没有
当你发现出现乱码时,去改变保存文件的编码的时候,utf8情况是好的,当你把它换成gbk的话就乱码了,但是你还以为是好的。这也是出现乱码的原因。这种情况会经常出现。
第四种情况,数据库里面本来就是乱码
数据的字符集,保存文件的编码,网页显示编码都一样了,还是出现乱码了,这种情况大多数,是数据入数据库的时候,就乱码了,这种情况是比较麻烦的。
二,我解决乱码的方法,百试不爽
我把这种方法起个名子叫庖丁解牛法。哈哈。数据库,保存文件编码,显示时候的编码必须一致,并且以数据库为准
第一种,数据库和保存文件的编码是utf8,网页显示呢是gb2312,这个时候,我们就要改显示编码了<meta http-equiv=”Content-Type” content=”text/html; charset=utf8″ />
第二种,数据库和网页显示都是utf8,保存文件用的是gb2312,这个时候呢,要注意一种,直接把保存文件的编码改过,是不行的,在改编码之前,把文件的内容先COPY一下,编码改过以后,在把刚才COPY的内容粘回去,这样就OK了.
第三种,数据库用的utf8,保存文件和显示编码是gb2312,这个时候呢,你可以用程序自带的函数把从数据库取出的数据进行一下转码把,utf8转成gb2312这样就不用去改变文件自己的编码了,以及显示编码了。以php为例,mb_convert_encoding($string,”gb2312″,”utf8″);
第四种,数据库乱码,是数据录入时候,数据本身和数据库存储编码不一样造成的。例如:数据库的存储编码是utf8,在数据入库的时候,加上一个mysql_query(“set names utf8;”);
三,乱码表现的形势
乱码的表现呢,我是遇到过二个,
1)就是出现在的字体乱码了,变成怪七怪八的字符了
2)就是直接是空白页面,查看源码呢,什么都没有,像这种情况,有的时候,很想起是因为是乱码造成的。右击页面在,查看属性,改一下编码就知道是不是因为乱码引起的空白页面了。
Web编程中乱码问题的实验和探究
文章分类:Web前端
说明:下文涉及的内容只限于对前端jsp和后台servlet的代码修改,不涉及Web容器和数据库的相关修改。
我的测试环境是:英文XP操作系统,容器采用Tomcat6,前台是jsp,后台Servlet,Ajax框架采用prototype1.6.0
Web编程中前后端乱码问题发生的根源:
从前端jsp到后台的Servlet,中间传输过程中的默认编码方式是ISO-8859-1,这种编码方式是西欧字符集,包括英语,德语,丹麦语,芬兰语等,其它语言如中文日文等是不兼容的,如不经转换或是设置直接在Servlet中用request.getParameter(paramName)这种方式直接拿出来中文部分就会得到乱码,但英语,字母,数字组合成的字符串是不会变成乱码的。
常见的编码解决乱码问题的方式有:
new String(request.getParameter(paramName).getBytes("ISO-8859-1"),"页面字符集");
HttpServletRequest.setCharacterEncoding("页面字符集");
URLDecoder.decode(str, "UTF-8");
它们各自用在不同的场合,这里的页面字符集指GBK,GB2312,UTF-8等,它们通常和jsp页面设定的字符集(charset)一致。
如果是将form通过post方式提交,在servlet的doPost函数开头(对于Struts写在execute函数开头)写上request.setCharacterEncoding("jsp网页字符集")就可以直接用request.getParameter(paramName)直接得到文字,不需要经过再转码。这里需要注意的是form的action如果不直接写成post的话,是会以get方式提交,这时request.setCharacterEncoding就会失效。
如果不管是post还是get方式,想做一个通用方案,则可以通过new String(request.getParameter(paramName).getBytes("ISO-8859-1"),"jsp网页编码方式")得到转码后正常的文字,这种方式只要知道网页的字符集,几乎都能还原成正确的文字,适用性很广,在Servlet和Action中很常见。
如果是Ajax提交方式,则在servlet或是action中书写request.setCharacterEncoding("jsp网页字符集")是没有效果的,经过对提交的URL用一次javascript的encodeURI函数编码后,用 new String(request.getParameter(paramName).getBytes("ISO-8859-1"),"jsp网页字符集")可以得到正确的文字。但如果不用encodeURI函数处理提交的url则不会正确的文字。
Ajax提交中文的另一种方式可以用javascript的encodeURI函数对提交的URL进行两次编码,而后台采用URLDecoder.decode(request.getParameter(paramName), "UTF-8")得到正确的文字。
分享到:
相关推荐
乱码解决 乱码解决 乱码解决 乱码解决 乱码解决 乱码解决 乱码解决
C#接收Json格式数据,中文出现乱码解决方法
主要为大家分享了介绍了java中文乱码之解决URL中文乱码问题的方法,感兴趣的小伙伴们可以参考一下
中文乱码解决: String userTmp0 = new String(user.getUsername().getBytes("ISO-8859-1"),"GBK"); 将iso-8859-1 转成gbk编码 上面这种方式是强制转的。。 下面的方式是解决ssh乱码的 struts2中文乱码解决方案 ...
录制的脚本有时候存在乱码,会影响脚本的正确回放,导致出现数据文字为空的情况。这种脚本乱码的问题估计是汉字较长时,编码转换出现了问题,一般不影响性能测试结果,若要解决,解决方法有:以下参考
可以解决中文乱码问题,共享给大家,解决UTF-8 转换 gb2312,直接放到Bin目录中并引用
开发中前台页面向后台传参,汉字乱码,看了好多网上的方法都解决不了,所以写了一个工具类,判断是乱码就转换,不乱码就不乱换,汉字字母符号自动判断。最后完美解决汉字乱码问题。
SP技术广泛应用于动态网页制作,但在应用中文字符时常常出现乱码。以前有关JSP技术中文乱码的研究,只是侧重于对常见的几...本文系统地分析了Java中字符编码的转换,最后针对JSP中常见的中文乱码情况,给出了相应的解决方法
DOC2CHM的使用及解决中文乱码
汉之云WIN7繁体乱码解决方案,内含解决方法和所需软件
使用setContentType(String type)方法设置编码,或使用setCharacterEncoding(String charset)和setHeader(String name,String value)设置编码和解码方式来解决中文输出乱码。 参考代码 编写ChineseServlet.java,...
解决Source Insight 等中文乱码问题:在Linux下执行此脚本,可以将 utf-8 或 gkb 等编码文件(可任意添加) 转换为 gb18003(可任意修改为其他) 编码文件。 特点:此脚本会递归地转换所在目录及子目录下的所有 .c...
解决java编程中出现的中文乱码的问题 编写一个静态方法,然后在中文的输出字段转换 public static String Chinese( String value){ try { if (value==null){ return ""; }else{ value=new String(value....
当需要将文本文件导入SAS中时,UTF-8编码的中文有可能会乱码,此文讨论了一种解决方法
1. 汉字乱码 2. 空格变成 + 号 本资源演示Delphi代码,实现javascript能正确进行Base64解码,不出现上述2个问题。 解决思路:进行Base64前先进行URL编码,在进行URL编码的时候,注意设置不需要SpaceAsPlus选项。 ...
懒得考虑各种字符编码问题了,用了一个比较暴力的方法,不只中文,所有双字节文字都可以避免乱码问题。
windows下eclipse工程转到linux下源代码注释中文乱码解决方法.docx
花了很长时间去解决spire水印问题,并且在某些软件生成的pdf在转化为图片时,会出现乱码问题,这个很困扰,于是查找了好多方法,还是觉得spire好用点,终于让我找到破解的了,很好用!
1、先用这个软件对VCF文件进行编码转换,转换出900多个单个VCF名片,在Outlook中就不会...网上有很多利用记事本修改VDF文件的方法,乱码问题及只读取VCF第一个联系人问题都无法解决。以上方法个人亲自尝试过,可用。
主要为大家详细介绍了java实现PPT转PDF出现中文乱码问题的解决方法,进行了详细的问题分析,需要的朋友可以参考下