日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux内核支持utf8,Linux对非UTF-8中文编码的支持

發布時間:2024/1/23 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux内核支持utf8,Linux对非UTF-8中文编码的支持 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

Linux系統默認采用的UTF-8的編碼(Unicode編碼的一種),包括系統中的中英文和特殊字符,都是默認采用UTF-8編碼。

而在國內,針對中文(包括基本的漢字、各少數民族文字、特殊字符等),有自己的編碼標準(也稱字符集),從前是GBK,到后來的GB18030-2000,現在是GB18030-2005,具體的編碼原理機制和區別這里不展開,網上相關資料很多。

在國內的一些特殊行業中,對操作系統中使用的中文編碼有嚴格的要求,如果使用Linux系統的話,就要求Linux能支持特定的編碼,比如GBK和GB18030。

那么Linux是否支持UTF-8之外的其他字符集呢?

如何才能支持

從桌面OS的角度看,支持指定字符集,需要從幾個層面支持:

內核。最底層的支持。

C庫。基礎庫和API支持,提供各種編碼之間的轉換接口。

圖形庫支持。在基礎圖形庫的層面,提供相關的API接口。其他圖形程序基于這些接口提供相關字符集支持。

桌面環境支持。圖形桌面環境能處理相關字符集(基于相關圖形庫接口)。

字體庫的支持。需要提供支持相應字符集的字體庫。

現狀

Linux主流發行版目前應該都是支持非UTF-8編碼的,OS在上述4個層面都提供了基礎的支持。但針對具體的字符集,支持程度還是有所不同,比如針對GB18030-2005字符集,目前絕大部分的Linux系統(包括Windows系統)都不能完美支持,主要問題孩子字體庫方面,會存在少數字符亂碼的情況。在不追求完美的情況下,還是能用的。

如果需要使用非UTF-8中文編碼,需要進行手工配置,通常的發行版都沒有提供相應的配置工具,需要手工修改配置。具體配置方法見后面小節。

另一方面,對于圖形環境來說,情況相對更糟糕一些,如果要在某發行版中設置非UTF-8的中文編碼,在進行了相應配置后,在圖形環境中,使用起來通常還會遇到各種各樣的問題,比如亂碼、文件(夾)打不開等。這些問題基本都是因為圖形環境中文件管理器對非UTF-8編碼支持不好導致,關鍵還在 文件管理器 ,底層的圖形庫,比如GTK,基本都提供了完善的支持,只是上層應用(文件管理器)未能完美使用。

文件管理修改

根據驗證,目前redhat系使用的主流的文件管理器,如nautilus和caja都不能完美支持非Utf-8編碼,即使按后續章節方法進行完整配置后,在文件管理器中也會出現亂碼,主要集中在左側的places sidebar中對于special dirs的顯示。

解決方法也很簡單,修改相關部分代碼,在顯示之前進行編碼轉換即可。

Redhat 7配置方法

配置系統全局字符集

系統全局的字符集,本質上就是LANG或LC_ALL環境變量,該環境變量包含兩部分內容:

系統語言

相應的字符集

典型設置如:LANG=zh_CN.UTF-8,即中文+UTF-8字符集,如果需要設置成GBK編碼,則需要設置為:LANG=zh_CN.GBK

但是,具體在哪兒設置呢?不同的發行版,配置方法不一樣,Redhat7中相應的配置文件為:/etc/locale.conf,在其中寫入如下內容即可。

LANG=“zh_CN.GBK”

設置后,需重啟生效。

配置文件管理器文件名字符集

文件管理器,如redhat默認使用的nautilus,即圖形環境中管理文件的圖形工具,也叫文件資源瀏覽器,常規理解即點擊“我的電腦”后運行的程序。

文件管理器中可以進行文件(夾)創建、移動、重命名等操作,這些操作后的最終生成的文件名使用的編碼,都依賴于文件管理器自身對字符集的支持。

nautilus對不同的字符集提供的比較完整的支持(確切的說應該是GTK提供了完整的支持),并提供了相應的配置框架,具體來說,只需要設置G_FILENAME_ENCODING=環境變量即可,比如要使用GBK編碼,只需將其設置為:

G_FILENAME_ENCODING="GBK"

對于不同的發行版,設置的位置也不同,取決于使用的登錄管理器,redhat7默認使用GDM作為登錄管理器,只需要在/etc/gdm/Xsession腳本的前面位置(第一有效代碼行,不包括注釋和#!/bin/bash行)加入如下行即可:

export G_FILENAME_ENCODING="GBK"

配置主目錄special dirs使用的字符集

默認情況下,每個用戶的主目錄(/home//)中都會默認創建幾個special目錄,比如“圖片”“視頻”“下載”之類的,在redhat7中這些目錄是在用戶第一次登錄時,通過xdg-user-dirs組件創建的,這些目錄的創建也涉及字符集問題,而xdg-user-dirs組件也提供了相應的配置選項,具體來說,只需要修改/etc/xdg/user-dirs.conf文件中的 **filename_encoding** 配置項即可。以GBK編碼為例,修改后的配置文件內容示例如下:用戶名>

enabled=True

filename_encoding=GBK

配置終端使用的字符集

在Redhat 7圖形環境中,默認打開的終端使用的默認字符集為UTF-8,如果設置為其它編碼,則需要修改相應的設置,設置步驟為:

選擇終端菜單:

“終端-》設定字符編碼-》添加或刪除…

在彈出的對話框列表中選擇新編碼(如GBK),選添加。

重新選擇終端菜單:

“終端-》設定字符編碼-》新添加的編碼

處理已有的UTF-8編碼的內容

對于已經在UTF-8編碼環境中創建的文件(夾),比如安裝完成啟動后,再修改系統的字符集為非UTF-8,此時如果已經通過圖形環境登錄過系統,這主目錄中會自動通過xdg-user-dirs組件創建相應的special目錄,并同時創建~/.config/user-dirs.dirs配置,這些目錄和配置默認是UTF-8編碼,這些目錄會在系統字符集修改為非UTF-8字符集后,顯示成亂碼,如果要解決這個問題,有兩種方式:

在安裝完成后首次啟動后,進入文本界面,在其中完成上述的所有配置(終端配置除外),然后重啟。即在xdg-user-dirs組件創建目錄之前完成字符集的設置。

對于已經創建了UTF-8編碼的文件(夾)時,可以通過convmv工具進行編碼轉換:(使用convmv工具前,需要先安裝相應組件)

yum install -y convmv

convmv -f utf-8 -t gbk –notest

另外,需要刪除已有的user-dirs.dirs配置(針對在修改字符集之前登錄過的用戶):

rm -f ~/.config/user-dirs.dirs

總結

以上是生活随笔為你收集整理的linux内核支持utf8,Linux对非UTF-8中文编码的支持的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。