Linux和windows文本編碼格式轉換


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM