1、這是zip格式的缺陷,zip文件格式中沒有欄位標志出文件名的編碼格式。Windows下生成的zip文件中的編碼是GBK/GB2312等,而linux下的默認編碼格式為UTF-8,所以才會出現亂碼。
2、解決方法
1、使用unzip解壓的時候,指定字元集(需要unzip支持,有些unzip命令不支持大O選項,自己可以安裝較新的unzip版本):
md5@crc4:~/$unzip-OCP936test.zip
2、藉助於p7zip和convmv:
a、在Fedora下的命令是
su-c'yuminstallp7zipconvmv'
b、在ubuntu下的安裝命令是
sudoapt-getinstallp7zipconvmv
安裝完之後,就可以用7za和convmv兩個命令完成解壓縮任務。
LANG=C7zaxyour-zip-file.zip
convmv-fGBK-tutf8--notest-r.
說明:
1)、第一條命令用於解壓縮,而LANG=C表示以US-ASCII這樣的編碼輸出文件名,如果沒有這個語言設置,它同樣會輸出亂碼,只不過是UTF8格式的亂碼(convmv會忽略這樣的亂碼)。
2)、第二條命令是將GBK編碼的文件名轉化為UTF8編碼,-r表示遞歸訪問目錄,即對當前目錄中所有文件進行轉換。
⑵ linux文件在windows系統亂碼
Linux系統下,備份文件到常常會出現中文亂碼,特別是在CLI模式下。一般通過修改/etc/i18n文件,將系統的字元集修改正確即可。但是,有時還是會出現亂碼,在這種情況下,如果你想備份文件就需要用打包的方法了,就有以下幾種方法:
通過工具
這種方法適用於知道備份的字元集
1.1 convmv
convmv -f GBK -t utf-8 --notest filename
把gbk的編碼轉成utf-8
1.2 enca
enca -L zh_CN -x UTF-8 filename
將文件編碼轉換為UTF-8編碼
1.3 iconv
iconv -f gbk -t utf-8 -o outfilename infilename
-f為原來的編碼方式,-t 為輸出文件的編碼方式, -o表示輸出文件名,這利用outfile表示,最後跟上要更改編碼方式的文件名sourcefile
通過打包
這種方法適用於i18n 和 locale 不一致時。
⑶ Linux系統下文件名出現中文亂碼如何重命名回來
一不小心在給文件重命名的時候輸入了中文字元,結果導致文件名亂碼,無法通過cat, less, rm 或者mv 之類的命令操作了。
如何重新命名它,使得其恢復正常呢?
據說linux下每個文件還有一個文件節點編號,對應於每個特定的文件。可以通過find 該節點編號來執行重命名操作。
ls -i res???_out.txt
144117972422752993 res???_out.txt
前面的數字串就是節點編號
find . -inum 144117972422752993 -exec mv {} res_out.txt \;
⑷ rar打開後亂碼如何解決
經常有網路朋友可能會遇到這樣的問題,當打開解壓後的軟體發現打開文件亂碼的情況。我們多數電腦中一般安裝都是WinRAR壓縮解壓軟體,在默認情況下,是可以雙擊打開RAR壓縮包里的文件的,一般遇到手臘液文件是亂碼的情況可能是壓縮文件本身的問題,也可能是我們解壓不當造成的問題,下面我為大家介紹以下相關解決辦法。
當我們雙擊打開壓縮包里的壓縮文件時,是操作系統系統調用相關的程序來打開壓縮包裡面的文件。
畢物具體情況:打開壓縮包的文件,只能是先將壓縮包解壓,然後雙擊才能局鏈正常打開。如果是直接雙擊壓縮包里的文件,不知是什麼原因,雙擊壓縮包里的文檔、圖片都不能正常打開,打開後全部顯示是亂碼。為什麼雙擊壓縮包里的文件,會是亂碼呢?原因就在於誤設置了使用WinRAR的查看器來打開壓縮包里的文件。
要解決雙擊能正常打開壓縮包里的文件,而不是亂碼的問題,可以先啟動WinRAR軟體,然後單擊上面的菜單“選項”→“設置”→“查看器”選項卡,在“查看器類型”欄目里選中“關聯程序”選項即可解決雙擊打開壓縮文件為亂碼的問題。
如果以上方法都無法解決問題,那麼可能是壓縮文件本身壓縮的時候出現故障導致的,我們可以尋找下其他文件打開試試。
⑸ linux中文文件顯示亂碼怎麼解決
Linux文件名、文件內容亂碼,主要原因是windows上的中文編碼默認是GBK,而Linux默認中文編碼為UTF-8,由於編碼不一致,所以導致亂碼問題。 為了解決這個亂碼,需要對文件進行轉碼,具體如下: 1、前提保證已安裝了convmv; 2、具體convmv的用法: Convmv –f 源編碼 –t 新編碼 [選項] 文件名 一般常用參數: -r 遞歸處理子目錄 --notest 真正進行操作,默認情況下是不對文件進行真實操作的,只是一個預覽 --list 顯示所有支持的編碼 --unescap 可以做一個轉義 3、比如我們有一個utf8的文件名,要求轉換成gbk編碼,命令如下: Convmv –f utf-8 –t gbk –notest 文件名 也可以使用linux下最好用的編碼轉換工具iconv來進行轉碼操作。 例子:將GBK編碼的文件轉換成UTF-8 iconv -f GBK -t UTF-8 gbkfile.txt > utf8file.txt
⑹ 如何解決linux上有中文命名的文件名壓縮後下載到windows上再解壓出來都是亂碼
Linux系統默認的字元編碼是 UTF-8 Windows 是 GBK 編碼,不支持UTF8. 所以 Linux下 的中文文件名到 Windwos下就成了亂碼。關於這個linux系統的學習,我一直看劉遄老師的書籍《linux就該這么學》,感興趣的也可以去看看啊。
解決辦法, 一個是 用英文文件名。 另一個,把Linux系統的文件名轉成GBK編碼的。 不過這種轉換有可能造成信息丟失。 因為 UTF8 不能 100% 轉換成GBK。 但GBK可以完全轉換成UTF8.
相關轉換命令是 convmv 可能需要安裝。
網路一下這個命令的用法。 轉換完了再打包, 到Window下應該就正常了。
還是建議你最好用英文名。
⑺ 文件在linux顯示亂碼怎麼解決
linux下經常遇到的編碼問題如果你需要在Linux中操作windows下的文件,那麼你可能會經常遇到文件編碼轉換的問題。Windows中默認的文件格式是GBK(gb2312),而Linux一般都是UTF-8。
查看編碼的方法
方法一:file filename
方法二:在Vim中可以直接查看文件編碼
:set fileencoding
如果你只是想查看其它編碼格式的文件或者想解決用Vim查看文件亂碼的問題,那麼你可以在
~/.vimrc 文件中添加以下內容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
這樣,就可以讓vim自動識別文件編碼(可以自動識別UTF-8或者GBK編碼的文件),其實就是依照fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ASCII)編碼打開
文件編碼轉換
多方法:
iconv 提供標準的程序和API來進行編碼轉換;
convert_encoding.py 基於Python的文本文件轉換工具;
decodeh.py 提供演算法和模塊來談測字元的編碼;
linux下文件編碼轉換:
方法一:
在Vim中直接進行轉換文件編碼,比如將一個文件轉換成utf-8格式
:set fileencoding=utf-8
或者
11)設置文件集合,即要對哪些文件進行操作,可以使用通配符,比如我通常是對 C/C++ 源程序進行編碼轉換
:args *.h *.cpp
2)給出要在每個文件上執行的命令,這里是轉換編碼:
:argdo set fenc=utf-8 | update
方法二:
iconv 轉換
5.案例:
假如說我們將windows下的一個UTF-8的文件傳到linux環境下,linux環境下的系統編碼是GB18030,我們cat的時候就會出現亂碼,這個時候就應該想到轉碼了,下面我們來進行試驗:
我們將windows下一個名為UTF-8.sh的文件傳到linux系統中,其中UTF-8.sh的內容如下:
我是中文編碼UTF-8模式~
而linux系統的系統語言設置為:
[root@sor-sys zy]# cat /etc/sysconfig/i18n
LANG=zh_CN.GB18030
SYSFONT="latarcyrheb-sun16"
這個時候查看一下文件的內容及編碼:
[root@sor-sys zy]# file UTF-8.sh
UTF-8.sh: UTF-8 Unicode text, with no line terminators
[root@sor-sys zy]# cat UTF-8.sh
鍩挎垜鏄?腑鏂囩紪鐮乁TF-8妯″紡~[root@sor-sys zy]#
[root@sor-sys zy]#
這個時候我們就需要轉換編碼了,記得使用iconv
[root@sor-sys zy]# iconv -f UTF-8 -t GB18030 UTF-8.sh -o GB18030.sh
[root@sor-sys zy]# cat GB18030.sh
??我是中文編碼UTF-8模式~[root@sor-sys zy]#
[root@sor-sys zy]# file GB18030.sh
GB18030.sh: Non-ISO extended-ASCII text, with no line terminators
[root@sor-sys zy]#
convmv就是更改文件名編碼方式的一個工具。
比如
sudo convmv -f gbk -t utf-8 -r –notest /home
就是將/home目錄下原來文件名是gbk編碼方式的全部改為utf-8格式的。這里 -f 後面為原來的編碼方式,-t 後面是要更改為的編碼方式, -r 表示這個目錄下面的所有文件, –notest 表示馬上執行,而不是僅僅測試而已。另外這命令好像要root才能執行,因此要加上 sudo。