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系統的文件名轉成GBK編碼的。 不過這種轉換有可能造成信息丟失。 因為 UTF8 不能 100% 轉換成GBK。 但GBK可以完全轉換成UTF8.
相關轉換命令是 convmv 可能需要安裝。
網路一下這個命令的用法。 轉換完了再打包, 到Window下應該就正常了。
還是建議你最好用英文名。
『叄』 如何解決 linux 的亂碼問題
出現這種情況的原因為兩種操作系統的中文壓縮方式不同,在windows環境中中文壓縮一般為gbk,而在linux環境中為utf8,這就導致了在windows下能正常顯示
txt文件在linux環境下打開呈現了亂碼狀態。
解決方法:在linux用iconv命令,輸入命令如下
iconv
-f
gbk
-t
utf8
file.pdf
>
file.pdf.utf8
此時會重生一file.utf8文件,打開之後就能正常顯示中文
linux系統下修改語言配置方法有:
法一:修改/etc/profile文件,增加export
LANG=zh_CN.GB18030
法二:修改/etc/sysconfig/i18n文件,將
#LANG="en_US.UTF-8"
#SUPPORTED="en_US.UTF-8:en_US:en"
#SYSFONT="latarcyrheb-sun16"
改為
LANG="zh_CN.UTF-8"
SUPPORTED="zh_CN:zh:en_US.UTF-8:en_US:en:zh_CN.GB18030"
SYSFONT="latarcyrheb-sun16"
/etc/profile:
為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行.
/etc/sysconfig/i18n
這里存放的是系統的區域語言設置
LANG
表明你當前系統的語言環境變數設置
,這里是
zh_CN.GB18030
SUPPORTED
表明系統預置了那些語言支持
,不在項目中的語言不能正常顯示
SYSFONT
定義控制台終端字體,你文本登錄的時候顯示的字體是
latarcyrheb-sun16
I18N
是
internationalization
的縮寫形式,意即在
i
和
n
之間有
18
個字母,本意是指軟體的「國際化」.I18N支持多種語言,不過同一時間只能是英文和一種選定的語言,例如英文+中文、英文+德文、英文+韓文等等;
如果在SCRT上操作時中文亂碼,可依次點擊options--session
options--appearance,選擇character
encoding為UTF-8
『肆』 上傳到linux的zip解壓亂碼怎麼解決
解壓縮亂碼和zip本身無關,應該是你的Linux操作系統設置的系統語言造成的。
一般來講Linux的中文默認編碼是zh_CN.UTF-8,而Windows的是GB2312,如果你在Windows創建zip壓縮包,壓縮包中的文件名稱是按照GB2312打包的,到Linux解壓縮自然成了亂碼。
解決方法有兩種,可以將Linux的默認編碼變為zh_CN.GBK,這可以通過修改/etc/sysconfig/i18n文件來完成;另一種方法就是改用ftp傳遞未經壓縮的文件,這樣文件名會被FTP服務自動轉碼。
『伍』 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
『陸』 linux解決中文亂碼問題
有時候linux伺服器突然間查看日誌都是中文亂碼,原因很奇怪,有可能是:
不管什麼原因吧,根本原因還是修改了linux系統本身的編碼,改回來就完了。
修改全部配置文件
末尾增加兩行
讓其生效
如果你的web 伺服器輸出的日誌都是亂碼,那麼最後一步:
『柒』 解決客戶端連接Linux伺服器中文顯示亂碼問題
客戶端連接Linux伺服器中文顯示亂碼,如下圖所示:
字元亂碼問題 :如果伺服器本身支持中文,只是客戶端顯示亂碼,通常就是
客戶端字元集與伺服器字元集不一致造成的。把客戶端字元集改成伺服器字元集就可以解決的。但是像 SSHSecureShellClient-3.2.9.exe 客戶端沒有設置字元集的地方,就需要把字元集改為zh_CN.GB18030才能正確顯示中文:
export LC_CTYPE=zh_CN.GB18030
export LC_ALL=zh_CN.GB18030
export LANG=zh_CN.GB18030
設置完就解決了客戶端連接Linux系統中文顯示亂碼的問題。
註:每次使用客戶端連接Linux伺服器時,都需要手動改一下字元集。
『捌』 linux顯示中文亂碼怎麼解決
Linux中文顯示不正常大多是終端字元集設置的不對,因為終端屏幕顯示信息是以設版置的語權言來顯示的,如果語言是英文或者其他編碼語言設置,顯示中文時就是亂碼。設置終端字元集需要設置LANG這個環境變數,設置方法是在終端輸入LANG=zh_CN.UTF-8,設置好LANG變數後,再在終端上用ls命令查看一下帶有中文的文件名應該就有效果了。
如果經過上面的設置後,用ls命令可以正常列出中文文件名了,那就最好將LANG=zh_CN.UTF-8這一行添加到~/.bashrc這個配置文件中,然後執行命令:source ~/.bashrc,使配置文件的設置馬上生效,這樣終端就被完美的設置成UTF-8中文編碼了。