这篇用于单独来讲讲文本格式和字符集编码该怎么去转换
具体过程
实验环境使用的是centos8(别用,纯坏,谁推荐你用这个打死谁)
1、文本格式
# 事实上windows上的文本文件编辑后,相同内容时,发送到Linux系统上使用cat指令显示的结果也是一样的。区别主要在其他地方
[root@centos8 data]#cat linux.txt
a
b
c
[root@centos8 data]#cat win.txt
a
b
c
(相同内容显示完全相同)
# 使用cat -A显示所有字符时
[root@centos8 data]# cat -A linux.txt
a$ a\n
b$ b\n
c$ c\n
[root@centos8 data]# cat -A win.txt
a^M$ a\r\n
b^M$ b\r\n
c^M$ c\r\n
# (此时可以看出win上的会多一些字符,这些字符就会导致运行时出现问题)
[root@centos8 data]#hexdump -C linux.txt
00000000 61 0a 62 0a 63 0a |a.b.c.|
00000006
[root@centos8 data]#hexdump -C win.txt
00000000 61 0d 0a 62 0d 0a 63 |a..b..c|
00000007
# (使用十六进制查看文件,也会发现文件存在区别)
此时已经了解了文件之间的区别了,我们开始了解转换文件吧。
# 安装转换工具
dnf -y install dos2unix
# 将windows的文本格式转换成Linux文本格式
dos2unix win.txt
# 将Linux文本格式转换成windows的文本格式
unix2dos win.txt
注:这个转换不会将编码格式变为UTF-8
# 另外,程序员确实很喜欢谐音)
2、字符集编码
注:win11现在不会有这个问题,创建txt时会自动使用UTF-8。但老点的系统好像不会,还是ANSI
# 查看系统所支持的(所有)字符编码
iconv -l
#windows7上文本默认的编码ANSI(GB2312)
[root@centos8 data]#file windows.txt
windows.txt: ISO-8859 text, with no line terminators
请注意,这里是Linux系统误判,这里应该是格式GB-2312
# 将文本的编码ANSI(GB2312)转换成UTF-8
[root@centos8 data]#cat windows.txt
▒▒▒▒▒▒
iconv -f gb2312 windows.txt -o windows1.txt
[root@centos8 data]#cat windows1.txt
您好
# 将UTF-8转换成ANSI(GB2312)
iconv -f utf8 -t gb2312 windows1.txt -o windows2.txt
好了,当你看到这里时就已经代表你浏览完了这部分内容。我想你可能只用了几分钟就完成了阅读和操作,但我确实忙活了挺长时间。不过ds帮助一下还是提高了我很多的速度。你也要试着去记记属于你的笔记和用用属于你的ai喔。
随笔
查阅别人的博客是一个很好的学习习惯,从别人的笔记中学习他的思路,他的经历。但很多时候笔记不一定会有那么详细,别人也不会展示他的全部。但我希望我可以展示的足够详细,给以后看到的人一点帮助,也希望能让他/她也萌发想法去建立一个自己的博客。加油,前行的路上永远都不会孤独的!
————25.08.14.夜