标题
- 文本文件出现乱码之全网最清晰解决方案
- 乱码出现的原因
- 解决方案
- 第一步:获取文件的原始编码格式。
- 第二步,获取当前系统的格式
- 第三步,将文件的内容以当前系统编码格式进行译码并且输出到新的文件中
- 第四步,删除原文件,保留新文件
文本文件出现乱码之全网最清晰解决方案
文本文件出现乱码,是我们经常遇到的问题,这篇文章将为你讲清楚乱码出现原因以及解决方案。
- 乱码出现的原因
- 解决方案
乱码出现的原因
小嘴在笔记本电脑上创建了一个文本文件,该文本文件的内容是“你好”。但对电脑而言这个内容并不是“你好”,而是一串二进制数。电脑的编码格式决定二进制数是什么。
小嘴的笔记本电脑的系统编码格式是A,得到的二进制数是"1010011"。
此时,这个文件被他上传到了开发板的linux系统上。在linux系统上打开看后发现出现了乱码。
这是因为,linux系统的编码格式不在是A,而是B。linux系统用B去译码“1010011”肯定会出错,译码得到的字符肯定不是“你好”。
解决方案
第一步:获取文件的原始编码格式。
有时候我们的文件是从网上下载的,无从得知原始编码格式。但有个python算法可以帮我们自动检测出。
import chardet
print(chardet.detect(open('./说明.txt','rb').read()))
我猜测这个算法是通过语义匹配计算得到文件原始正确编码格式的。
运行该python脚本后得到的结果格式如下:
{'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
有编码格式,有置信度,有文本内容所用语言。
第二步,获取当前系统的格式
以我的linux系统为例。在控制台运行如下命令可得到系统编码。
echo $LANG
得到系统编码格式 en_US.UTF-8
第三步,将文件的内容以当前系统编码格式进行译码并且输出到新的文件中
运行如下命令
iconv -f GB2312 -t UTF-8 说明.txt > 1.txt
-f 参数后边指定乱码文件的原始编码格式,-t参数后边指定当前系统编码格式,>通道符号后边指定新的文件的地址
第四步,删除原文件,保留新文件
乱码问题解决