乱码产生的原因

乱码通常由解析错误和编码转换错误导致。当文件用错误的编码打开,如GB2312文件以UTF-8打开,会出现乱码。若经过错误解析后又进行编码转换,解决方法可能涉及反向解析,如GBK编码发送的内容被UTF-8解码,需以GBK重新解析乱码。某些乱码无法恢复。
摘要由CSDN通过智能技术生成

乱码产生的原因一般有两种:

    
一种是解析错误;
另一种是在错误解析的基础上加上了编码转换。

(1)解析错误

    
比如一个GB2312编码的文件,使用UTF-8来打开,就会出现乱码。

    
这种情况下,只需要使用正确的编码方式即可解读。很多编辑器都有这个功能,如下图中的NotePad++:
avatar

(2)错误的解析和编码转换

    
使用编辑器如何改变编码方式都不对时,很有可能是文本在错误解析的基础上,还进行了编码转换。如下例子:
avatar
    
发送方以GBK编码发送,而接收方以UTF-8解码时,就会出现乱码现象。这时接收方想要查看正确的文本,就必须进行反向解析。将乱码以UTF-8编码得到的流再进行GBK解析,才能得到正确的文本。

    
在现实中,我们可能并不知道发送方和接收方的编码。所以应该以程序的方式进行如上的反向解析,如下:

    public static void main(String[] args) throws Exception {
//        by
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值