文件亂碼怎么辦? windows電腦文件亂碼恢復正常的技巧
文件打開是亂碼怎么解決?在我們使用電腦中,都遇到過打開文件后,發(fā)現全是亂碼。遇到這種情況,該怎么解決呢?這里小編整理了一些實用的文件修復方法,有需要的朋友可以來看看哦。
個人建議
修改時盡量修改自定義選項例如.bash_profile,.vimrc文檔,這樣不會忘記自己修改了哪里,有時候某處的修改導致后面出現了新的問題,但卻無法定位。
漢字亂碼現象有4種類型:
1.文本亂碼:是windows系統(tǒng)顯示亂碼,如:菜單、桌面、提示框等。這是由于注冊表中有關字體部分的設置不當引起的;
2. 文檔亂碼:是各種應用程序,游戲本來顯示中文的地方出現亂碼。 這種亂碼形成的原因比較復雜,有第1類的亂碼原因,也有可能是軟件中使用的中文動態(tài)鏈接庫被英文動態(tài)鏈接庫復蓋處造成的;
3.文件亂碼:主要是指郵件亂碼;
4.網頁亂碼:是由于港臺的繁體中文大五碼(big5)與大陸簡體中文(gb2312)不通用而造成的。
文件內容亂碼
以.txt文檔為例,直接打開是亂碼,可通過下面方法查看情況,在vim軟件中輸入
#查看當前文件編碼 :set fileencoding fileencoding=gb18030
在.vimrc文檔下加入
set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1 set enc=utf8 set fencs=utf8,gbk,gb2312,gb18030
此時文檔會正確顯示。
解壓文件夾文件名亂碼
對于windows平臺,編碼格式是GBK,對應的漢字是兩個字節(jié)長度。對于Linux平臺,編碼格式是UTF-8,對應的漢字是3個字節(jié)。
解壓文件夾的命令
unzip -O CP936 testCode.zip
對應的解釋
unzip --h -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives
命令行亂碼怎么辦?
執(zhí)行以下命令
vim ~/.bash_profile #添加下面的命令 export LANGUAGE=en_US.UTF-8 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 #使得生效,有的讓重啟是一個意思 source ~/.bash_profile
使用命令查看當前編碼
locale:local encode,即本地編碼的意思。這個命令不帶任何參數就是顯示當前系統(tǒng)的字符集編碼。也可以設置環(huán)境變量,全體參數man locale
在Linux中通過locale來設置程序運行的不同語言環(huán)境,locale由ANSI C提供支持。locale的命名規(guī)則為<語言>_<地區(qū)>.<字符集編碼>,如zh_CN.UTF-8,zh代表中 文,CN代表大陸地區(qū),UTF-8表示字符集。
locale #LANG LC_*的默認值,是最低級別的設置,如果LC_*沒有設置,則使用該值。類似于 LC_ALL。 LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 #LC_CTYPE用于字符分類和字符串處理,控制所有字符的處理方式,包括字符編碼,字符是單字節(jié)還是多字節(jié),如何打印等。是最重要的一個環(huán)境變量。 LC_CTYPE="en_US.UTF-8" # LC_NUMERIC 非貨幣的數字顯示格式 LC_NUMERIC="en_US.UTF-8" #LC_TIME 時間和日期格式 LC_TIME="en_US.UTF-8" # LC_COLLATE定義該環(huán)境的排序和比較規(guī)則 LC_COLLATE="en_US.UTF-8" #LC_MONETARY貨幣格式 LC_MONETARY="en_US.UTF-8" #LC_MESSAGES提示信息的語言。另外還有一個LANGUAGE參數,它與LC_MESSAGES相似,但如果該參數一旦設置,則LC_MESSAGES參數就會失效。LANGUAGE參數可同時設置多種語言信息,如LANGUANE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"。 LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" #LC_ALL它是一個宏,如果該值設置了,則該值會覆蓋所有LC_*的設置值。注意,LANG的值不受該宏影響。 LC_ALL=en_US.UTF-8
locale -a你可以看看目前系統(tǒng)里支持的字符集,如果不支持,還要安裝奧。當前.bash_profile的設置是
#中文顯示 if [ 1 -eq 1 ];then LANG=zh_CN.GB18030 LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN export LANG LANGUAGE fi #英文顯示 if [ 0 -eq 1 ];then export LANGUAGE=en_US.UTF-8 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 fi
字符編碼基礎知識
最初的計算機字符編碼是通過ASCII來編碼的,是現今最通用的單字節(jié)編碼系統(tǒng),使用7位二進制數來表示所有的字母、數字、標點符號及一些特殊控制字符,作為美國編碼標準來使用。
ISO-8859-1編碼是單字節(jié)編碼,向下兼容ASCII,是許多歐洲國家使用的編碼標準。其編碼范圍是0x00-0xFF,0x00-0x7F之間完全和ASCII一致,0x80-0x9F之間是控制字符,0xA0-0xFF之間是文字符號。
Unicode,學名是Universal Multiple-Octet Coded Character Set(簡稱UCF),與ISO-8859-1標準兼容。由國際組織標準制定,作為一種國際語言編碼標準,支持超過十萬個字符,涵蓋世界數十種文字系統(tǒng),是一種通用字符編碼標準。很多技術,如Java編程語言、現代操作系統(tǒng)都采用了Unicode編碼。
UTF-8/UTF-16等則是對Unicode進行了編碼,是其一種實現方式。UTF-8(8-bit Unicode Transformation Format),是一種變長的編碼方式,它以8位為碼元,用1-6個碼元對Unicode進行編碼,對英文字符使用單字節(jié)編碼,對中文編碼用到三個字節(jié)來編碼。UTF-16(16-bit Unicode Transformation Format)是用16位為碼元,用1個或2個碼元對Unicode進行編碼。
utf-16將字符集劃分為基本多文中平面和輔助平面,基本多文中平面中的字符與Unicode是一致的,不需要轉換;處在輔助平面中的碼元(如一些拼音文字或者中日韓表意文字的擴充),需要2個碼元進行編碼。
GB2312是國家制定的漢字編碼標準,使用雙子節(jié)進行編碼,共收入6763個漢字和682個非漢字圖形字符。GBK即對國標編碼的擴展,在GB2312的基礎上進行擴展形成的,使用雙子節(jié)編碼方式,共收入21003個漢字,從而大大滿足了漢字使用的需要。
總結:unicode是國際通用編碼標準,可以表示全世界的字符,但其字符集也是最復雜、占用空間最大的。開發(fā)者可以根據需要進行選擇編碼方式。
參考文獻
原文:https://blog.csdn.net/shijing_0214/article/details/50908144 關于文件編碼的一些命令
查看文件的編碼:編碼為GB2512
#檢查文件的編碼 enca test1.txt enca -L zh_CN fileName Simplified Chinese National Standard; GB2312 CRLF line terminators
轉換文件編碼
enca -L 當前語言 -x 目標編碼 文件名 enca -L zh_CN -x utf-8 * //例如要把當前目錄下的所有文件都轉成utf-8 enca -L zh_CN -x UTF-8 file //將文件編碼轉換為"UTF-8"編碼 enca -L zh_CN -x UTF-8 < file1 > file2 //如果不想覆蓋原文件可以這樣 enca -L zh_CN -x utf8 <quad.c >quadTest.c
亂碼-ubuntu下文檔的文件名到windows下變?yōu)開__下劃線
現象:Windows下編輯過的中文文檔,Ubuntu下會顯示亂碼。
原因:兩個操作系統(tǒng)使用的編碼不同。Ubuntu下使用的編碼是utf-8,而Windows使用的是gb18030。
ubuntu16.04解決文件中文亂碼問題
1、查看當前系統(tǒng)使用的字符編碼
~$ locale LANG=en_US LANGUAGE=en_US: LC_CTYPE="en_US" LC_NUMERIC="en_US" LC_TIME="en_US" LC_COLLATE="en_US" LC_MONETARY="en_US" LC_MESSAGES="en_US" LC_PAPER="en_US" LC_NAME="en_US" LC_ADDRESS="en_US" LC_TELEPHONE="en_US" LC_MEASUREMENT="en_US" LC_IDENTIFICATION="en_US" LC_ALL=
2、查看當前系統(tǒng)支持的字符集
:~$ locale -a C C.UTF-8 en_US en_US.iso88591 en_US.utf8 POSIX
3、查看locale文件
:~$ cat /etc/default/locale # File generated by update-locale LANG="en_US" LANGUAGE="en_US:"
解決:
1、執(zhí)行l(wèi)ocale-gen zh_CN.UTF-8拉取中文編碼(需要root權限)
:~$ locale-gen zh_CN.UTF-8 sed: couldn't open temporary file /etc/sedMLPzNn: Permission denied deployer@RSLog026:~$ sudo su [sudo] password for deployer: root@RSLog026:/home/deployer# locale-gen zh_CN.UTF-8 Generating locales (this might take a while)... zh_CN.UTF-8... done
2、查看現在系統(tǒng)支持的字符集,發(fā)現多了zh_*等中文字符集
:~$ locale -a C C.UTF-8 en_US en_US.iso88591 en_US.utf8 POSIX zh_CN zh_CN.gb2312 zh_CN.gbk zh_CN.utf8
3、修改文件/etc/default/locale(必須要改,,開始還以為不該也行,發(fā)現如果不改這個文件,需要執(zhí)行兩遍第四步操作)
當前文件 :~$ cat /etc/default/locale # File generated by update-locale LANG="en_US" LANGUAGE="en_US:" 改成如下: :~$ cat /etc/default/locale # File generated by update-locale LANG=zh_CN.UTF-8 #LANGUAGE="en_US:"
4、執(zhí)行sudo dpkg-reconfigure locales命令,由于不能截圖,這里語言描述下了。
選中 zh_CN GB2312,zh_CN.GBK GBK,zh_CN.UTF-8 UTF-8 按空格就是選中,然后tab鍵到ok,點擊ok以后會跳轉到下一界面,選中zh_CN.UTF-8,,然后ok就可以了
接下來重新打開會話就能正常使用中文了,不用重啟系統(tǒng)。
查看當前系統(tǒng)使用的字符編碼
locale LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:en_US:en LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC=zh_CN.UTF-8 LC_TIME=zh_CN.UTF-8 LC_COLLATE="zh_CN.UTF-8" LC_MONETARY=zh_CN.UTF-8 LC_MESSAGES="zh_CN.UTF-8" LC_PAPER=zh_CN.UTF-8 LC_NAME=zh_CN.UTF-8 LC_ADDRESS=zh_CN.UTF-8 LC_TELEPHONE=zh_CN.UTF-8 LC_MEASUREMENT=zh_CN.UTF-8 LC_IDENTIFICATION=zh_CN.UTF-8 LC_ALL=
查看當前系統(tǒng)支持的字符集
locale -a C C.UTF-8 en_AG en_AG.utf8 en_AU.utf8 en_BW.utf8 en_CA.utf8 en_DK.utf8 en_GB.utf8 en_HK.utf8 en_IE.utf8 en_IL en_IL.utf8 en_IN en_IN.utf8 en_NG en_NG.utf8 en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US.utf8 en_ZA.utf8 en_ZM en_ZM.utf8 en_ZW.utf8 POSIX zh_CN.utf8 zh_SG.utf8
執(zhí)行l(wèi)ocale-gen zh_CN.UTF-8拉取中文編碼
sudo locale-gen zh_CN.* Generating locales (this might take a while)... zh_CN.GB18030... done zh_CN.GB2312... done zh_CN.GBK... done zh_CN.UTF-8... done Generation complete.
查看現在系統(tǒng)支持的字符集,發(fā)現多了zh_*等中文字符集
locale -a C C.UTF-8 en_AG en_AG.utf8 en_AU.utf8 en_BW.utf8 en_CA.utf8 en_DK.utf8 en_GB.utf8 en_HK.utf8 en_IE.utf8 en_IL en_IL.utf8 en_IN en_IN.utf8 en_NG en_NG.utf8 en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US.utf8 en_ZA.utf8 en_ZM en_ZM.utf8 en_ZW.utf8 POSIX zh_CN zh_CN.gb18030 zh_CN.gb2312 zh_CN.gbk zh_CN.utf8 zh_SG.utf8
亂碼-windows下文檔移到linux下文件顯示亂碼
上面的方法可以實現在gedit軟件下,正確顯示,但是在vim文檔下顯示如下
°üo?μ?Dé?a?úID£??°??·?2?·?ê?
但在gedit軟件中打開實際上是
包含的虛擬機ID,及其分布方式
查看文件的編碼方式
file debug_tran.cpp debug_tran.cpp: C++ source, ISO-8859 text, with CRLF line terminators
由于我的vim 配置里面顯示了文件的格式,我的vim顯示如下
dos latin1 cpp
經過查詢可知:Latin1是ISO-8859-1的別名,有些環(huán)境下寫作Latin-1。此字符集支持部分于歐洲使用的語言,所以中文顯示亂碼。
可以采用下面的命令轉換
iconv -f gbk -t utf8 debug_tran.cpp.gbk > debug_tran.cpp.utf
查找新產生的文件
file debug_tran.cpp.utf debug_tran.cpp.utf: C++ source, UTF-8 Unicode text, with CRLF line terminators
使用下面的語句查看具體選項
iconv --help
在windows中打開linux文檔建議使用notepad++文件打開,在里面可以修改不同編碼。
亂碼分類表

相關文章

Win12發(fā)布時間曝光?微軟或將對Windows進行重大更新
微軟目前或許已經準備將于2024年推出為代號Windows 11 24H2或Windows 12的版本,下文為大家?guī)砹嗽敿毥榻B,一起看看吧2023-12-07
windows server哪個版本穩(wěn)定? Windows Server各版本差異介紹
Windows Server是微軟為企業(yè)提供的服務器操作系統(tǒng),提供了許多高級的IT功能,例如數據存儲、網絡管理、安全性和虛擬化等,在眾多的Windows Server版本中,最好用的版本可能2023-11-29
Windows系統(tǒng)目錄CoreMessaging.dll文件丟失該怎么解決?
Windows系統(tǒng)目錄CoreMessaging.dll文件丟失該怎么解決?用戶們可以去下載coremessaging.dll文件就可以了,詳細請看下文介紹2023-11-21
windows磁盤0動態(tài)無效外部不可用怎么辦? 電腦所有磁盤屬性為動態(tài)的解決
windows磁盤0動態(tài)無效外部不可用怎么辦?windows系統(tǒng)電腦的磁盤屬性為動態(tài),不能用,該怎么辦呢?下面我們就來看看電腦所有磁盤屬性為動態(tài)的解決辦法2023-10-20
電腦雙系統(tǒng)怎么分區(qū)? 雙系統(tǒng)電腦硬盤分區(qū)技巧
電腦雙系統(tǒng)怎么分區(qū)?很多電腦安裝了雙系統(tǒng),該怎么給雙系統(tǒng)分區(qū)呢?下面我們就來看看雙系統(tǒng)電腦硬盤分區(qū)技巧2025-04-03
xcopy命令怎么用? Windows命令行XCOPY幾種應用方法
xcopy命令怎么用?Windows系統(tǒng)中有很多命令可以快速執(zhí)行某種操作,今天我們就來看看命令行XCOPY幾種應用方法2023-10-13
Windows系統(tǒng)關閉當前應用程序或窗口的快捷鍵有哪些?
Windows系統(tǒng)關閉當前應用程序或窗口的快捷鍵有哪些?windows系統(tǒng)中經常會用各種快捷鍵操作,怎么關閉當前窗口呢?詳細請看下文介紹2023-09-05
API-MS-WIN-CRT-RUNTIME-L1-1-0.DLL丟失了怎么修復?
電腦提示:無法定位程序輸入點usctbase.abort于動態(tài)鏈接庫api-ms-win-crt-runtime-l1-1-0.dll,該怎么解決這個問題呢?詳細請看下文介紹2023-07-13
為什么Windows中的文件會損壞? windows文件受損的阻止和修復方法
為什么Windows中的文件會損壞?打開文件提示無法訪問,這是很多用戶都會遇到的難題,下面我們就來看看windows文件受損的阻止和修復方法2023-07-05
server2012藍屏代碼DPC WATCHDOG VIOLATION怎么解決?
server2012藍屏代碼DPC WATCHDOG VIOLATION怎么解決?server2012系統(tǒng)突然藍屏,并顯示終止代碼:DPC WATCHDOG VIOLATION,下面我們就來看看藍屏原因和解決辦法2023-05-17









