當前位置:首頁 » 操作系統 » linuxzip亂碼

linuxzip亂碼

發布時間: 2023-07-23 03:38:18

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

② 急!!java linux 從伺服器上創建一個zip包 向zip包里寫文件 下載zip包中文亂碼

用的是什麼zip庫,有沒有設置編碼格式。
例如,zip4j的話,zf.setFileNameCharset("UTF-8");

③ linux與windows 互傳的文件,中文名稱出現亂碼

windows
系統自帶和第三方軟體使用的編碼不同就會導致這樣。vsftp
不支持編碼識別自動轉換。所以兩個客戶端軟體用的不同編碼就會讓
vsftp
的編碼混亂。一般來說
linux
現在都用
utf-8
一些新版本的
ftp
軟體默認也會去轉換為
utf-8
進行傳輸文件名,但
windows
似乎舊版本還是用本地編碼進行
io。也就是簡體中文用
gb
系列,繁體中文用
big
,英文用
ascii
什麼的互相不同的編碼。

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

文件本向是UTF8的,但是你的系統當前用的可能不是,比如是GB2312,或者GBK之類的,這樣看utf8格式的文件就會是亂碼。

⑤ Linux系統終端字體亂碼(非管理員賬戶操作指南)

問題:使用一台Linux系統的機器,終端總是顯示有亂碼,不是中文亂碼,看起來像是英文亂碼,我這強迫症又受不了了

解決方案:
Linux字元編碼默認為UTF-8,如果出現英文亂碼有可能是系統設置的編碼方式為GBK。

設置locale的根本就是設置一組總共12個LC開頭的變數,不包括LANG和LC_ALL。

優先 級:LC_ALL > LC_* > LANG

可以看出原系統設置的為中文字體顯示和運行的語言環境,所有的設置都是使用的 zh_CN.gbk ,因中英文字元編碼方式不同,可能造成英文字元或者空格顯示有亂碼。

5.退出後再次查看locale(再次登錄才生效)
亂碼的字元消失了。locale轉變為:

⑥ 通過java控制linux環境下解壓文件夾後中文文件名是亂碼

將linux當前環境設置為中文環境即可。
修改/etc/sysconfig/i18n 文件
LANG="zh_CN.GB2312"

熱點內容
訪問學者的要求 發布:2025-03-15 12:10:53 瀏覽:554
學編程難嗎 發布:2025-03-15 12:07:00 瀏覽:72
我的世界國際伺服器怎麼漢化 發布:2025-03-15 12:02:21 瀏覽:296
對編程的理解 發布:2025-03-15 12:02:16 瀏覽:778
linuxvim刪除 發布:2025-03-15 12:02:15 瀏覽:929
同花順伺服器地址選哪個好 發布:2025-03-15 12:00:48 瀏覽:532
編譯原理計算器 發布:2025-03-15 11:59:14 瀏覽:472
ubuntu內核編譯時中途停止 發布:2025-03-15 11:54:47 瀏覽:592
pythoninitialize 發布:2025-03-15 11:49:56 瀏覽:568
如何利用伺服器多開賺錢 發布:2025-03-15 11:43:59 瀏覽:416