Linux教程

Linux文本编码格式转换

本文主要是介绍Linux文本编码格式转换,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

widows文本格式和Linux文本格式的区别

[root@centos8 data]#cat linux.txt	#linux文本文件
a
b
c
[root@centos8 data]#cat win.txt		#windows文本文件
a
b
c

#file命令可看到文件格式有所不同(主要是行结束符的不同)
[root@centos8 data]#file win.txt linux.txt
win.txt: ASCII text, with CRLF line terminators
linux.txt: ASCII text

#linux文本文件内容(十六进制)
[root@centos8 data]#hexdump -C linux.txt
00000000	61 0a 62 0a 63 0a		|a.b.c.|
00000006

#windows文本文件内容(十六进制)
[root@centos8 data]#hexdump -C win.txt
00000000	61 0d 0a 62 0d 0a 63		|a..b..c|
00000007

#使用-c查看linux文本文件内容(单字节字符显示)
[root@daben ~]# hexdump -c linux.txt 
0000000   a  \n   b  \n   c  \n   	#此处可观察到 \n 对应十六进制编码0a
0000006

#使用-c查看windows文本文件内容(单字节字符显示)
[root@daben ~]# hexdump -c linux.txt 
0000000   a  、\r\n   b  \r\n   c  \r\n   	#此处可观察到 \n 对应十六进制编码0a
0000007
##结论:linux和windows文本文件的主要差异在于回车符的定义。linux使用\n作为行结束符,而window使用\r\n作为行结束符。

Linux和windows文本格式相互转换

#安装转换工具
[root@centos8 data]#dnf -y install dos2unix

#将Windows的文本格式转换成的Linux文本格式
[root@centos8 data]#dos2unix
win.txt
dos2unix: converting file win.txt to Unix format...

[root@centos8 data]#file win.txt
win.txt: ASCII text

#将Linux的文本格式转换成Windows的文本格式
[root@centos8 data]#unix2dos
win.txt
unix2dos: converting file win.txt to DOS format...

[root@centos8 data]#file win.txt
win.txt: ASCII text, with CRLF line terminators

转换文件字符集编码

#显示支持字符集编码列表
[root@centos8 ~]#iconv -l
#windows7上文本默认的编码ANSI(GB2312)

[root@centos8 data]#file windows.txt
windows.txt: ISO-8859 text, with no line terminators

#查看Linux系统编码
[root@centos8 data]#echo $LANG
en_US.UTF-8

#默认在linux无法正常显示文本内容
[root@centos8 data]#cat windows.txt
▒▒▒▒▒▒[root@centos8 data]#

#将windows7上文本默认的编码ANSI(GB2312)转换成UTF-8
[root@centos8 data]#iconv -f gb2312 windows.txt -o windows1.txt

#修改编码后显示正常
[root@centos8 data]#cat windows1.txt
马哥教育[root@centos8 data]#ll windows1.txt
-rw-r--r-- 1 root root 12 Mar 23 10:13 windows1.txt

[root@centos8 data]#file windows1.txt
windows1.txt: UTF-8 Unicode text, with no line terminators

#将UTF-8转换成windows10上文本默认的编码ANSI(GB2312)
[root@centos8 data]#iconv -f utf8 -t gb2312 windows1.txt -o windows2.txt
[root@centos8 data]#file windows2.txt
windows2.txt: ISO-8859 text, with no line terminators
这篇关于Linux文本编码格式转换的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!