编码讨论---乱码问题之终极解决

很多人 特别是新手 做j2ee 项目中
总能受困于 这样或那样的编码问题

这里讨论下 新手学习,高手指教 一起研究下
(以 tomcat mysql 做例子 我推荐所有的编码采用utf-8)

1 工程
工程内所有的 .java .jsp .xml .txt 都有默认的编码 默认的是系统环境的编码
我们中文系统通常是GBK 推荐都采用utf-8
utf-8 的时候 你编译 生成doc 可能会遇到乱码(特别是采用ant 的时候,生成doc你几乎100%会遇到)

解决方法 以ant 为例子
编译 注意 encoding 参数
<target name="build" >
       <mkdir dir="${build.dir}" />
       <javac encoding="utf-8" destdir="${build.dir}" target="1.3" debug="true" deprecation="false" optimize="false" failοnerrοr="true">
           <src path="${src.dir}" />
           <classpath refid="master-classpath" />
       </javac>
   </target>

生成doc 注意 encoding 和 charset
<target name="doc">
<mkdir dir="doc" />
<javadoc charset="utf-8" encoding="utf-8" packagenames="${packages}" sourcepath="src" destdir="doc" author="true" version="true" use="true" splitindex="true" >
<classpath refid="master-classpath" />
</javadoc>
</target>

这里 的encoding 就是指的你 java 文件的编码格式 javac 和javadoc 都有这个参数
charset 指的是 生成 doc 后的编码方式 javadoc 的参数

2 数据库
mysql 的编码最复杂 从4以后 mysql 号称支持多编码 它更灵活了 我们也更麻烦了
mysql 有4个级别的编码
系统级
库级
表级
sql语句级
请保持采用统一的编码 推荐utf-8
其它数据库要简单的多 一般都是一种编码

3 web server
tomcat 为例
tomcat server.xml 中一个参数
<Connectorport="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIncoding="utf-8"/>
经测试 这个URIncoding 参数主要是 get 方法中采用编码

4 jsp 显示层
第1条中说明了 jsp 文件本身的格式
很多朋友采用eclipse +myeclipse 生成jsp
它自动生成一个头<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
不要误解 这句话不能保证你在ie里看到的不是乱码
pageEncoding它的意思是 这个页面本身采用的是 utf-8 (似乎只在eclipse 里有效果 ,我不确定)
为了在ie 里不乱码  你还得加一句 <%@ page contentType="text/html; charset=UTF-8"%>
它不能在(myeclispe)自动生成  推荐修改 myeclipse的模板 在下边的目录里
MyEclipse/eclipse/plugins/com.genuitec.eclipse.wizards_4.0.1/Templates
里边的jsp模版 你加上<%@ page contentType="text/html; charset=${encoding}"%>

5 filter
自从tomcat 4 以后 网上就流传了一个SetCharacterEncodingFilter 过滤器 搜一下有很多
很好用 web.xml 中加入
<filter>
 <filter-name>Set Character Encoding</filter-name>
 <filter-class>filters.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>

6 资源文件
首先保证 文件本身是utf-8
然后部署的时候用 native2ascii 转换
这里给出 ant 里的例子
<native2ascii encoding="utf-8" dest="${web.dir}/WEB-INF/classes" src="${src.dir}" includes="**/*.properties" />

总结
到这里 你应该彻底解决了乱码了 嘿嘿
写的有点乱 还请高手们多指点

(本文作者:EasyJF开源团队  散仙 欢迎转载,转载请保留作者声明,谢谢!) 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 针对gd-gui1.6.6中文乱码问题解决方法有以下几个步骤: 1. 确认系统环境:首先要确认系统环境是否为UTF-8编码,可以通过查看操作系统的语言设置或者系统属性来确认。 2. 检查字体设置:检查系统中使用的字体是否支持中文字符。可以在gd-gui1.6.6的设置中查看字体设置,确保选择了支持中文的字体。 3. 修改字符编码设置:打开gd-gui1.6.6的配置文件,修改字符编码设置。一般来说,将配置文件中的字符编码设置为UTF-8即可解决中文乱码问题。 4. 更新gd-gui版本:如果以上方法没有解决中文乱码问题,可以尝试更新gd-gui至最新版本。新版本可能修复了旧版本的中文显示问题。 5. 检查数据源:如果中文乱码问题仅出现在特定的数据源中,需要检查该数据源的编码设置。确保数据源的编码与gd-gui1.6.6的编码设置一致。 综上所述,通过确认系统环境、检查字体设置、修改字符编码设置、更新gd-gui版本以及检查数据源等方法,可以解决gd-gui1.6.6中文乱码问题。 ### 回答2: 在使用gd-gui1.6.6时,出现中文乱码问题可以通过以下步骤解决。 首先,确保操作系统的默认编码UTF-8。可以在控制面板或系统设置中进行修改。如果默认编码已经是UTF-8,则可以继续下一步。 其次,打开gd-gui1.6.6的设置界面,在设置选项中找到“编码”或“字符集”相关的设置项。将设置项的值修改为UTF-8。 然后,重新启动gd-gui1.6.6,让新的设置生效。 接下来,对于已存在的中文文本,可以尝试进行转码。在使用gd-gui1.6.6打开文本文件时,选择合适的编码(如UTF-8)进行打开,然后将文本内容复制到新建的UTF-8编码文本文件中保存。 如果以上步骤仍然无法解决中文乱码问题,可以检查文本文件的具体编码和字符集信息,确保其与gd-gui1.6.6的设置一致。也可以尝试重新下载和安装gd-gui1.6.6,以确保安装包没有损坏。 总之,通过调整操作系统和gd-gui1.6.6的相关设置,并进行适当的编码转换,可以解决gd-gui1.6.6中文乱码问题。 ### 回答3: 要解决gd-gui1.6.6中文乱码问题,可以按照以下步骤进行操作。 首先,确保你的gd-gui1.6.6软件已经安装在电脑上,并且已经运行起来。 然后,在gd-gui1.6.6的界面上找到“设置”或“选项”等类似的菜单项,点击进入。 接下来,在设置界面中找到与字体相关的选项。gd-gui1.6.6通常会有字体大小、字体颜色等选项,你需要找到与字体编码相关的选项。通常这个选项会称为“编码”或“字符集”等。 一旦找到该选项,你需要将其从默认的编码改为UTF-8(Unicode编码)或者GB2312(中文编码)。UTF-8是一种通用的字符编码,可以支持多种语言,包括中文。GB2312是专门为中文设计的编码。 在改变编码之前,确保你已经下载安装了对应的字体文件,以确保gd-gui1.6.6能够正确显示中文字符。 点击应用或保存按钮后,重新启动gd-gui1.6.6软件,此时中文字符应该能够正常显示而不再出现乱码问题了。 总结来说,解决gd-gui1.6.6中文乱码问题的关键是将编码设置为UTF-8或GB2312,并确保安装了对应的字体文件。如果还有其他相关的选项或设置可以尝试,可以继续进行调整,直到问题解决
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值