​ 这篇用于单独来讲讲文本格式和字符集编码该怎么去转换

具体过程

实验环境使用的是centos8(别用,纯坏,谁推荐你用这个打死谁)

1、文本格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 事实上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
# (使用十六进制查看文件,也会发现文件存在区别)

此时已经了解了文件之间的区别了,我们开始了解转换文件吧。

1
2
3
4
5
6
7
8
9
10
11
# 安装转换工具
dnf -y install dos2unix

# 将windows的文本格式转换成Linux文本格式
dos2unix win.txt

# 将Linux文本格式转换成windows的文本格式
unix2dos win.txt

注:这个转换不会将编码格式变为UTF-8
# 另外,程序员确实很喜欢谐音)

2、字符集编码

注:win11现在不会有这个问题,创建txt时会自动使用UTF-8。但老点的系统好像不会,还是ANSI

1
2
3
4
5
6
# 查看系统所支持的(所有)字符编码
iconv -l

#windows7上文本默认的编码ANSI(GB2312)
[root@centos8 data]#file windows.txt
windows.txt: ISO-8859 text, with no line terminators

请注意,这里是Linux系统误判,这里应该是格式GB-2312

1
2
3
4
5
6
7
8
9
10
11
# 将文本的编码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.夜