Character-Encoding

變音符號的問題(無法輸入終端+無法打開文件)

  • February 24, 2018

在我的筆記型電腦上,我安裝了 Linux Mint 18.3,現在我遇到了以下問題:

作為一個德國人,我碰巧有一些文件(或目錄)的名稱中包含變音符號(這本身不是問題)。如果我現在嘗試打開那些包含變音符號或位於名稱包含變音符號的(子)目錄中的文件(例如 PDF),它將無法打開。

例如,我有一個名為的目錄Übungsblätter,在該目錄的某處我有一些 PDF 文件。如果我嘗試從文件管理器打開其中一個文件,Okular 會告訴我它無法打開.../Ãbungsblätter/...,這表明它通過用一些奇怪的字元替換變音符號來搞亂路徑。

但是,如果我打開了 Okular 並使用其菜單打開相應的文件,一切都會像魅力一樣工作,所以只有在嘗試從我的文件管理器(Dolphin)打開文件時才會出現問題。

此外,我體驗到我無法在終端中輸入變音符號。我發現這個問題處理了那個特定的問題,我希望這也能解決文件問題。然而,情況並非如此,儘管我現在可以在終端中輸入變音符號(儘管在輸入變音符號時它會插入兩個字元。例如,在輸入時ö它會插入兩個字元\udcc3\udcb6(通過輸入ö和點擊發現)之後返回)。它確實顯示為單個ö字元,但我必須明確刪除兩個字元才能使命令行再次為空。

這是輸出locale

locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=de_DE.UTF-8
LANGUAGE=en_US
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME=nds_DE.UTF-8
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=

編輯:

我剛剛發現從終端打開相應的 PDF 時,它也會以與從文件管理器打開時類似的方式出錯,但這次它說它無法打開.../bungsbltter/...(它完全刪除了變音符號)

EDIT2:

輸出locale -a

C
C.UTF-8
de_DE.utf8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX

編輯 3:

/etc/default/locale:

LANGUAGE=en_GB.utf8
LANG=en_US.UTF-8

我在語言環境設置中看到了一些混亂。

一點是:de_DEen_US的混合en_GB

另一點是:一些語言環境是用 聲明的.utf8,另一些是用 聲明的.UTF-8。雖然意思應該是一樣的,但可能會引起麻煩。

錯誤消息Cannot set LC_ALL to default locale: No such file or directory可能是因為缺少en_US.UTF-8in locale -aen_US.utf8相反),但它是在/etc/default/locale.

我有點困惑,LANG=de_DE.UTF-8在輸出中看到locale雖然它沒有定義,/etc/default/locale也沒有/etc/locale.conf. 也許是覆蓋系統設置的桌面環境設置?還是在~/.bashrc?還要檢查您是否有~/.config/locale.conf. Arch wiki中列出了更多可以設置環境變數的位置。找出在哪裡LANG=de_DE.UTF-8設置並刪除它。


我認為最好的方法是將所有內容設置為德語語言環境。您的locale -a節目在您的系統上安裝了語言環境。其中之一是de_DE.utf8

核心設置在/etc/default/locale. 您可以手動編輯它,我認為它的內容應該是公正的LANG=de_DE.utf8,僅此而已。您可以自己編輯文件,或為此使用工具:

update-locale --reset LANG=de_DE.utf8

為了使系統保持英語,但也有變音符號,將語言環境設置en_US.utf8locale -a. utf8 應該提供變音符號,即使該語言不使用它們:

update-locale --reset LANG=en_US.utf8

祈禱,重新啟動並檢查是否一切正常。如果控制台工作正常,但桌面環境中仍然存在問題,請檢查您的桌面設置 GUI 中的語言條目,並將 is 設置為de_DE.utf8

引用自:https://unix.stackexchange.com/questions/425929