乱码编码问题学习小结(包括Java)
2007-07-20 15:32
567 查看
在使用java的过程中,由于平台和国际化的需要,需要处理多种文字编码,这时很多乱码问题就来了,虽然每次都测试实验最后找到解决方案,但不知所以然,所以仔细学习了一下相关东西,加上自己的实践总结。
首先请访问一篇好文章: http://www.regexlab.com/zh/encoding.htm
(字符,字节和编码,包括C++,Java相关讨论)
实践中问题以及思路:
将程序生成的html内容用getBytes("gb2312")得到字节流,用FileOutputStream写到磁盘(操作系统文件编码iso-8859-1)。按理来说,直接以字节流写出去,不会出转换的问题。但实际上用任何软件打开都是乱码。(如果操作系统文件编码gb2312不会出问题)
分析:问题在于任何软件尤其IE都根据操作系统文件编码进行了转换成自己使用的编码,所以反而出错了。
解决:用纯字节流写,即转化成iso-8859-1(唯一的和Unicode有映射单字节编码,而且从任何字节流转换都不会丢失数据,见前面推荐的文章)写到磁盘,无论操作系统是什么编码(如gb,jis等等),从磁盘读出来的数据都是纯字节流,没有丢失,其他软件再根据自己的方式转换成适当的编码就没有问题。
一个常见问题讨论:
http://topic.csdn.net/t/20051208/10/4445548.html
1,首先,我修改了xml文件的编码方式,改为“GBK”编码格式的xml;
<?xml version="1.0" encoding="GBK"?>
2, 在访问数据库的配置文件中,访问mysql的url 参数修改为:useUnicode=true&characterEncoding=GBK;
3,在我的Pageconfig的类修改取xml的xml.getBytes("ISO8859-1"));
InputStream st = new ByteArrayInputStream(xml.getBytes("ISO8859-1"));
这个我先前也曾经尝试过,但没有匹配成功;
4,需要修改mysql数据库的默认编码:
default-character-set=GBK
default-collation=GBK
5,关于以下的取值,不做任何转码;
ret.title =page.getAttributeValue("title");
6,因为我有一个专门最后生成wml页面的转码的类,将会转成utf-8格式;
首先请访问一篇好文章: http://www.regexlab.com/zh/encoding.htm
(字符,字节和编码,包括C++,Java相关讨论)
实践中问题以及思路:
将程序生成的html内容用getBytes("gb2312")得到字节流,用FileOutputStream写到磁盘(操作系统文件编码iso-8859-1)。按理来说,直接以字节流写出去,不会出转换的问题。但实际上用任何软件打开都是乱码。(如果操作系统文件编码gb2312不会出问题)
分析:问题在于任何软件尤其IE都根据操作系统文件编码进行了转换成自己使用的编码,所以反而出错了。
解决:用纯字节流写,即转化成iso-8859-1(唯一的和Unicode有映射单字节编码,而且从任何字节流转换都不会丢失数据,见前面推荐的文章)写到磁盘,无论操作系统是什么编码(如gb,jis等等),从磁盘读出来的数据都是纯字节流,没有丢失,其他软件再根据自己的方式转换成适当的编码就没有问题。
一个常见问题讨论:
http://topic.csdn.net/t/20051208/10/4445548.html
1,首先,我修改了xml文件的编码方式,改为“GBK”编码格式的xml;
<?xml version="1.0" encoding="GBK"?>
2, 在访问数据库的配置文件中,访问mysql的url 参数修改为:useUnicode=true&characterEncoding=GBK;
3,在我的Pageconfig的类修改取xml的xml.getBytes("ISO8859-1"));
InputStream st = new ByteArrayInputStream(xml.getBytes("ISO8859-1"));
这个我先前也曾经尝试过,但没有匹配成功;
4,需要修改mysql数据库的默认编码:
default-character-set=GBK
default-collation=GBK
5,关于以下的取值,不做任何转码;
ret.title =page.getAttributeValue("title");
6,因为我有一个专门最后生成wml页面的转码的类,将会转成utf-8格式;
相关文章推荐
- 字符集编码以及java乱码问题学习总结
- Java中文&编码问题小结
- Win7 32位MySQL5.6免安装配置编码为utf8——解决Java插入MySQL乱码问题
- java base64编码 加密和解密(切记注意乱码问题)
- Java学习笔记37:Spring 使用 @ResponseBody 返回中文乱码问题解决
- java中的乱码及编码问题
- 一项浩大的JAVA编码工程(与unix兼容乱码问题)
- java web,charset编码设置正确情况下出现部分中文正常,部分中文乱码的问题
- java web,charset编码设置正确情况下出现部分中文正常,部分中文乱码的问题
- Java中文&编码问题小结
- java web 学习笔记 编码问题总结
- java编码解码乱码问题
- 编码字符集与Java -Java World乱码问题根源之所在。 ZZ
- java编码问题小结
- Java学习:Servlet中解决乱码问题
- PHP乱码问题,UTF-8乱码常见问题小结 linux-windows 文件编码乱码问题
- Base64 JAVA后台编码与JS前台解码(解决中文乱码问题)
- Java与编码问题串讲之三--乱码
- Java学习笔记之JFreeChart 的乱码问题
- 前台使用js的encodeURIComponent编码后,java解析乱码问题的解决方法