導航:首頁 > 編程系統 > linux解壓zip亂碼

linux解壓zip亂碼

發布時間:2024-11-23 11:19:33

1. linux中unzip解壓時中文亂碼如何解決

更改源碼解決亂碼
調試發現問題出現在MultiByteToWideChar方法里,
如 MultiByteToWideChar(CP_ACP,0,fn,-1,tfn,MAX_PATH); 到這里時fn中的name屬性值還是正常的,在這個方法內部執行完tfn就亂了。
解決方法:
打開unzip.cpp源文件,找到函數
ZRESULT TUnzip::Get(int index,ZIPENTRY *ze)
{ // ......
// ......} 12345

這個函數里有
#ifdef UNICODE
MultiByteToWideChar(CP_UTF8,0,fn,-1,tfn,MAX_PATH);#else
strcpy(tfn,fn);#endif12345

把 CP_UTF8 改為CP_ACP, ( CP_ACP 指示要使用當前設置的 API 默認 Windows ANSI 代碼頁)
重新編譯後
這樣就解決了解壓中文文件名稱亂碼的問題
編譯時解決源碼問題(無需更改源碼)
上面的情況,我們我觀察到unzip源代碼這段開始的地方有判斷
#ifndef Ext_ASCII_TO_Native 1

這樣問題似乎更簡單了,不用改源代碼,只需在make時定義 Ext_ASCII_TO_Native 即可,這樣 Ext_ASCII_TO_Native 實際為一個空的宏,不進行任何轉換操作。
比如,使用下面的方法編譯
make -DExt_ASCII_TO_Native 1

或者在bash執行下面兩行
export LOCAL_UNZIP=-DExt_ASCII_TO_Native
make12

unzip解壓縮含中文文件名zip包是出現亂碼的問題解決!
如果您的系統已經安裝了unzip
方法一 unzip行命令解壓,指定字元集
通過unzip行命令解壓,指定字元集
unzip -O CP936 xxx.zip (用GBK, GB18030也可以)1

方法二 在環境變數中,指定unzip參數
在環境變數中,指定unzip參數,總是以指定的字元集顯示和解壓文件
/etc/environment中加入2行
UNZIP=」-O CP936″
ZIPINFO=」-O CP936″12

方法三 利用pyton來處理
復制以下內容(Python)保存未myuzip.py文件腳本,並修改運行許可權為可運行(chmod +x uzip)
#!/usr/bin/env python# -*- coding: utf-8 -*-# uzip.pyimport osimport sysimport zipfileprint "Processing File " + sys.argv[1]

file=zipfile.ZipFile(sys.argv[1],"r");for name in file.namelist():
utf8name=name.decode('gbk') print "Extracting " + utf8name
pathname = os.path.dirname(utf8name) if not os.path.exists(pathname) and pathname!= "":
os.makedirs(pathname)
data = file.read(name) if not os.path.exists(utf8name):
fo = open(utf8name, "w")
fo.write(data)
fo.close
file.close()

這樣以後我們解壓縮時只需要運行此文件即可
./myuzip.py xxxx.zip

2. linux下zip文件解壓出現亂碼怎麼辦

是文件名亂碼還是什麼?
如果是文件名亂碼就是系統字型檔的問題,更新一下相應字型檔應該能解決(或者強行重命名也沒問題),windows下也經常會有這種問題的,不是什麼太大的毛病

3. Linux 下 zip 文件解壓亂碼如何解決

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表示遞歸訪問目錄,即對當前目錄中所有文件進行轉換。



4. 在linux中解壓zip文件,中文字元亂碼,請問如何解決。不要粘貼復制。 系統本身的字元集是utf-8

如果你文件夾中只有這一個zip文件的話,可以用命令unzip *.zip 應該就OK了

5. linux系統,文件是utf-8格式的為什麼會亂碼呢

亂碼的問題有很多可能,第一、linux安裝時是否支持中文;第二、要用命令查一下格式:echo $LANG;第三確認格式是否需要在系統中修改格式類型;第四連接終端(putty,secureCRT)等工具的編碼是否和系統的編碼一致,不致要改為一致就可以了。

6. 上傳到linux的zip解壓亂碼怎麼解決

解壓縮亂碼和zip本身無關,應該是你的Linux操作系統設置的系統語言造成的。
一般來講Linux的中文默認編碼是zh_CN.UTF-8,而Windows的是GB2312,如果你在Windows創建zip壓縮包,壓縮包中的文件名稱是按照GB2312打包的,到Linux解壓縮自然成了亂碼。
解決方法有兩種,可以將Linux的默認編碼變為zh_CN.GBK,這可以通過修改/etc/sysconfig/i18n文件來完成;另一種方法就是改用ftp傳遞未經壓縮的文件,這樣文件名會被FTP服務自動轉碼。

7. linux下zip文件解壓出現亂碼怎麼辦

壓縮包里是中文的吧, linux如果裝了中文語言支持的話,把語言環境設置一下 LANG=zh_CN.utf-8

閱讀全文

與linux解壓zip亂碼相關的資料

熱點內容
文件合同列印格式怎麼調 瀏覽:77
win10文件共享提示伺服器沒有響應 瀏覽:788
倒t型電阻網路相對穩定度怎麼算 瀏覽:367
怎麼樣編程彈窗 瀏覽:730
咨詢投標文件內容包含 瀏覽:248
win7win10c盤空間越來越小 瀏覽:806
悠途出行app在哪裡選座 瀏覽:67
突襲2哪個版本好玩 瀏覽:549
網站怎麼申請認證 瀏覽:676
簡訊apk是什麼文件 瀏覽:940
app官方下載在哪裡 瀏覽:511
iphone5s改名字 瀏覽:772
win10文件夾打開一直閃跳 瀏覽:208
win10攝像頭不能拍照 瀏覽:56
雲陽數控編程培訓哪裡學 瀏覽:519
文件的存放路徑怎麼改 瀏覽:583
cad字體文件如何導出 瀏覽:236
cs16需要cdkey哪個文件里 瀏覽:817
如何讓另一個表格的數據關聯 瀏覽:368
來自app的快捷指令是怎麼有的 瀏覽:844

友情鏈接