`
灵动的水
  • 浏览: 194608 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

解决乱码的方法(转)

阅读更多
解决乱码的方法(转)
文章分类: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")得到正确的文字。


分享到:
评论

相关推荐

    乱码解决 乱码解决 乱码解决 乱码解决 乱码解决

    二、乱码的解决方法 1. **确定编码格式**:首先,你需要确定原始文件的正确编码格式。可以使用诸如Notepad++、HexEdit等工具来查看文件的字节序列,从而推测其可能的编码。 2. **编码转换**:一旦确定了正确的编码...

    [Java]PDF转图片解决中文乱码.zip

    在这个特定的压缩包文件中,"PDF2img"是一个基于PDFBox开发的DEMO,它设计用于解决PDF转图片时可能出现的中文乱码问题。 PDFBox是Apache软件基金会的一个开源项目,提供了丰富的API来读取、写入、修改PDF文档。在...

    java中文乱码之解决URL中文乱码问题的方法

    解决URL中文乱码的一种方法是使用JavaScript进行编码,然后在服务器端解码。有两种常见策略: - **一次转码**:使用`encodeURI()` 对URL进行编码,然后在服务器端使用适当的解码方法,如Java中的`new String(name...

    C#接收json数据后中文乱码解决方法

    C#接收Json格式数据,中文出现乱码解决方法

    乱码文字解决方法

    本文将详细介绍如何识别和解决乱码问题,并提供一系列实用的方法来帮助用户有效地处理这类问题。 #### 一、乱码的原因 乱码通常由以下几种原因导致: 1. **编码不匹配**:当文件被保存或读取时使用的字符编码与...

    java乱码问题解决方法

    Java 乱码问题解决方法 Java 乱码问题是 Java 开发中常见的问题之一,解决这个问题需要了解 Java 的编码方式、JSP 中文乱码问题、Tomcat 5.5 中文乱码问题、JDBC ODBC Bridge 的 Bug 及其解决方法、Solaris 下 ...

    C# 将中文乱码转换成中文

    在C#中,利用`System.Text.Encoding`类提供的方法,我们可以轻松地完成编码转换,从而解决由编码不一致引起的乱码问题。在实际开发中,理解不同编码的特点及其适用场景对于编写高质量、跨平台的软件至关重要。

    jsp解决乱码方法总结

    ### jsp解决乱码方法总结 在Web开发中,尤其是使用Java Server Pages(JSP)进行页面渲染时,经常会遇到字符编码的问题,也就是所谓的“乱码”现象。这些问题如果处理不当,将严重影响用户体验以及数据的正确性。...

    乱码问题的解决

    在本文中,我们将详细介绍乱码问题的原因、类型和解决方法。 一、编码不一致的原因 编码不一致是乱码问题的主要原因。编码不一致可能出现在多个方面: * 页面编码:jsp 默认 iso8859-1 * 服务器编码:tomcat 默认...

    java c++ 通信之间的乱码解决方法

    解决跨语言通信的乱码问题,关键在于识别两端的编码方式,并在数据传输前进行正确的转换。在Java中,可以使用`getBytes`和`new String`配合指定编码进行转换;在C++中,通常需要手动处理编码转换,可能需要用到第三...

    mysql乱码解决方法

    【MySQL 乱码解决方法】 ...以下是一些常用的解决方法: 1. **配置数据库环境**: - 在使用工具如ZendStudio或phpMyAdmin管理MySQL时,确保...通过调整这些设置,可以有效地避免和解决乱码问题,确保数据的正常显示。

    关于笔记本用usb转串口连接出现乱码的解决

    ### 关于笔记本用USB转串口连接出现乱码的解决 在现代计算机系统与外部设备进行数据交互的过程中,串口通信仍然占据着重要的...通过上述方法,大多数情况下都可以有效地解决乱码问题,保障数据传输的准确性和稳定性。

    loadrunner脚本乱码解决方法

    解决LoadRunner脚本乱码的方法主要有以下两个步骤: 1. **调整录制选项的编码设置**: 在LoadRunner工具中,你可以通过调整录制选项来设定合适的编码。具体操作是:选择"Tool"菜单,然后进入"Recording Options",...

    日文乱码转换工具

    6. **解决乱码的其他方法**:除了使用Locale Emulator,还可以尝试修改应用程序的内部编码设置,或者使用第三方编码转换工具。对于文件,可以使用文本编辑器或转换工具进行编码转换。 总的来说,"日文乱码转换工具...

    php中url地址栏传参数中文乱码解决方法汇总

    php 中 URL 地址栏传参数中文乱码解决方法汇总 PHP 中 URL 地址栏传参数中文乱码解决方法汇总是指在 PHP 编程中,如何解决 URL 地址栏传参数中文乱码的问题。这个问题是由于浏览器和服务器之间的编码问题引起的。 ...

    sshz中文乱码解决方法

    在Java程序中,可以采用直接对字符串进行编码转换的方式来解决乱码问题。例如,当接收到的数据是以`ISO-8859-1`编码格式传入时,而系统内部使用的是`GBK`编码,则可以通过以下方式进行编码转换: ```java String ...

    iPad阅读PDF乱码问题简便解决方法.docx

    这一种方法可以解决乱码问题,但存在的问题是PDF文件大小会急剧增大,操作比较繁琐,并且AdobeAcrobat是收费软件,不过在论坛网盘等还是能正常下载到。 解决方法2:使用ApabiMaker装换成CEBX,并使用...

    icepdf转图片 去水印,解决字体乱码

    在实际操作中,要使用icepdf去除PDF水印和解决字体乱码,你需要做以下步骤: 1. **引入icepdf库**:首先,你需要将ICEpdf-pro-6.2.3压缩包解压,并在项目中添加icepdf的依赖,通常是JAR文件或者通过Maven、Gradle等...

    解决PLC程序简繁日文乱码.rar

    在PLC编程的场景下,如果PLC编程软件不支持中文字符或者系统区域设置不正确,可以尝试使用AppLocale Utility来临时改变程序的运行环境,以期望解决乱码问题。 解决PLC程序中的乱码问题可能涉及以下几个步骤: 1. ...

Global site tag (gtag.js) - Google Analytics