JAVA 开发中处理乱码

在用COMMON-NET处理FTP时,遇到中文出现了乱码问题,乱码问题早先在做信息抽取的时候也遇到过,当时记得用第三方的词典,但是其是GBK编码,而我系统为UTF-8。

这次也一样,工程为UTF-8,但是用COMMON-NET从FTP上下载文件的时候,中文乱码。无奈,上网搜,结果各种尝试,各种不行。

靠人不如靠己,查看FTP这个类,发现:
 public static final String DEFAULT_CONTROL_ENCODING = "ISO-8859-1"

COMMON-NET的默认是“ISO-8859-1”编码,也就是其从服务器上读取的文件,都是按照ISO-8859-1编码方式处理的,在工程中返回字符串时,已经是乱码,所以不管怎么改,都是乱码。
The default character encoding used for communicating over an FTP control connection. The default encoding is an ASCII-compatible encoding. Some FTP servers expect other encodings. You can change the encoding used by an FTP instance with setControlEncoding.

FTP服务器是GBK的,所以将值改为GBK后,在UTF-8的工程中就可以正确解读中文了。

写到这里,不深入,下次遇到这个问题还会被卡住。不妨探究下问题的根本。

是什么导致中文乱码的?
当磁盘上的文件的编码和我们系统中的编码不一致的时候,此时读文件就会产生乱码,一般文件的I/O都是以字节流的方式read和write。当系统是UTF-8,而原始文件是GBK,那么系统按照UTF-8的方式encoding GBK的文件,就会产生字节错位,所以会产生乱码。

知道了如何产生乱码,接下来的问题就是如何解决乱码问题。
首先我们得知道原始文件是什么样的编码格式,如果不晓得原始文件是什么编码,那必须写一个字符检测程序(这一点浏览器做的是相当的好,不论是什么编码格式的网页,浏览器都能自动的检测出,并且转换成我们本地的格式,从而我们不会看到乱码);
知道是什么编码的文件,那么我们就按照相应格式的文件编码格式读取文件,比如是UTF-8的文件,那么就以UTF-8的格式读取文件,这个格式与我们的工作平台无关,此时如果我们的工作平台是GBK编码,那么放心,绝不会出现乱码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值