簡單解決Ubuntu修改locale的問題

2021-09-18 02:29:13 字數 3161 閱讀 9919

問題描述

終端顯示中文正常,應用程式裡面顯示中文異常。

錯誤表現

$ sudo dpkg-reconfigure locales

perl: warning: setting locale failed.

perl: warning: please check that your locale settings:

language = 「zh_cn:zh:en_us:en」,

lc_all = 「zh_cn.utf-8」,

lang = 「zh_cn.utf-8」

are supported and installed on your system.

perl: warning: falling back to the standard locale (「c」).

locale: cannot set lc_ctype to default locale: no such file or directory

locale: cannot set lc_messages to default locale: no such file or directory

locale: cannot set lc_all to default locale: no such file or directory

/bin/bash: warning: setlocale: lc_all: cannot change locale (zh_cn.utf-8)

generating locales…

en_us.utf-8… /usr/sbin/locale-gen: line 177: warning: setlocale: lc_all: cannot change locale (zh_cn.utf-8)

up-to-date

generation complete.

$ man locale

man: can』t set the locale; make sure $lc_* and $lang are correct

$ locale

locale: cannot set lc_ctype to default locale: no such file or directory

locale: cannot set lc_messages to default locale: no such file or directory

locale: cannot set lc_all to default locale: no such file or directory

lang=zh_cn.utf-8

language=zh_cn:zh:en_us:en

lc_ctype=「zh_cn.utf-8」

lc_numeric=「zh_cn.utf-8」

lc_time=「zh_cn.utf-8」

lc_collate=「zh_cn.utf-8」

lc_monetary=「zh_cn.utf-8」

lc_messages=「zh_cn.utf-8」

lc_*****=「zh_cn.utf-8」

lc_name=「zh_cn.utf-8」

lc_address=「zh_cn.utf-8」

lc_telephone=「zh_cn.utf-8」

lc_measurement=「zh_cn.utf-8」

lc_identification=「zh_cn.utf-8」

lc_all=

$ localectl list-locales

c.utf-8

en_us.utf8

zh_cn.utf8

問題解決辦法

要想達到應用程式中正常顯示中文字元的目的,要下面的三個變數應該如下,

lang=zh_cn.utf-8

language=zh_cn:zh:en_us:en

lc_all=lc_all=zh_cn.utf-8

但問題在於「lc_all to default locale: no such file or directory」和「lc_all: cannot change locale (zh_cn.utf-8) 」,因此重新安裝中文語言包。

執行下面命令

sudo apt-get -y install language-pack-zh-hans

或sudo apt-get -y install language-pack-zh-hans language-pack-zh-hans-base

如果想支援繁體字,則執行

sudo apt-get -y install language-pack-zh-hant

或sudo apt-get -y install language-pack-zh-hant language-pack-zh-hant-base

再執行locale命令設定當前locale環境

locale --all-locales 列出當前系統中所有支援的locale

localectl list-locales 列出當前系統中所有可用的locale

localectl set-locales locale… 修改當前系統中的locale,與locale功能相同,與export上文提到的三個變數相同

lang=en_us.utf-8

lc_ctype=「en_us.utf-8」

lc_numeric=「en_us.utf-8」

lc_time=「en_us.utf-8」

lc_collate=「en_us.utf-8」

lc_monetary=「en_us.utf-8」

lc_messages=「en_us.utf-8」

lc_*****=「en_us.utf-8」

lc_name=「en_us.utf-8」

lc_address=「en_us.utf-8」

lc_telephone=「en_us.utf-8」

lc_measurement=「en_us.utf-8」

lc_identification=「en_us.utf-8」

lc_all=

其中,lc_all=為空,但並不是表示這裡不對,而是lc_all=實際上等於lc_collate、lc_ctype、lc_monetary、lc_messages、lc_numeric、lc_time,參見locale(7)。

原版:

簡單解決Ubuntu修改locale的問題

本文針對的問題是 ubuntu 安裝中文語言包 ubuntu server中文問題 ubuntu更改語言環境 ubuntu locale的設定 cannot change locale zh cn.utf 8 linux中文亂碼 linux字符集的修改 linux亂碼的解決辦法 等問題,提供一站式解...

簡單解決Ubuntu修改locale的問題

原始出處 作者資訊和本宣告。否則將追究法律責任。本文針對的問題是 ubuntu 安裝中文語言包 ubuntu server中文問題 ubuntu更改語言環境 ubuntu locale的設定 cannot change locale zh cn.utf 8 linux中文亂碼 linux字符集的修改...

Ubuntu修改locale問題解決

本文針對的問題是 ubuntu安裝中文語言包 ubuntu server中文問題 ubuntu更改語言環境 ubuntu locale的設定 cannot change locale zh cn.utf 8 linux中文亂碼 linux字符集的修改 linux亂碼的解決辦法 等問題,提供一站式解決...