乱码编码问题学习小结(包括Java)

在使用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&amp;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格式;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值