導航:首頁 > 編程系統 > 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亂碼相關的資料

熱點內容
qq手機電腦互傳文件 瀏覽:613
linux內核升級方法 瀏覽:986
iphone5沒有熱點 瀏覽:189
哪裡有在線幼兒c語言編程 瀏覽:959
iframe跨域調用js對象 瀏覽:178
蘋果手機能分文件夾嗎 瀏覽:679
fdb文件怎麼刪除裡面內容 瀏覽:638
龍江網路配置什麼路由器 瀏覽:169
如何使用指標導入數據 瀏覽:866
平時用什麼app看nba 瀏覽:503
win10想以管理員身份運行bat文件 瀏覽:85
合並單元格中的其他數據如何排序 瀏覽:331
電腦窗口程序在哪 瀏覽:281
前女友把我微信刪了又加什麼意思 瀏覽:655
win10不識別無線xboxone手柄 瀏覽:403
汽車之家app怎麼看成交價 瀏覽:908
abc文件破解密碼 瀏覽:516
怎麼登錄米家app賬號 瀏覽:165
兆歐表多少轉讀數據 瀏覽:414
多媒體網路通訊 瀏覽:747

友情鏈接