一部のファイル/フォルダ名は7桁ではなく、OpenSUSEシステムに正しく表示されません。
/music/Gabriel_Fauré フォルダの例:
# ls -1d /music/Gabriel_Faur?
/music/Gabriel_Faur??
ロケールがLC_CTYPE
一部のUTF-8値に設定されていない可能性がありますか?
# locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_GB.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=a4
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_CTYPE
まあ、私の考えでは、Unicodeにはいいと思います!エラーメッセージは何を言いますか?
LC_ALL
興味深いことに、正確な値に設定してもLC_CTYPE
問題ありません。
# setenv LC_ALL en_US.UTF-8
# ls -1d /music/Gabriel_Faur?
/music/Gabriel_Fauré
しかし、LC_ALLを設定したくありません。en_US.UTF-8(または実際には他のもの)他の設定を混乱させるからです!これは問題を解決しませんが、私にとっては悪い解決策です。
また、/bin/ls
画面に文字を印刷するときにシェルでLC_CTYPEを無視するのはなぜですか?
Arch Linuxではロケールが作成されたことを確認しましたが、openSUSEはこのトピックに関する情報を見つけることができませんでした。しかもロケールが存在するようです。
編集する:
# ls -1d /music/Gabriel_Faur? | hexdump -C
00000000 2f 6d 75 73 69 63 2f 47 61 62 72 69 65 6c 5f 46 |/music/Gabriel_F|
00000010 61 75 72 c3 a9 0a |aur...|
00000016
したがって(私が知っている限り)正しいUTF-8です。
編集2:
# locale -a | grep en_US
en_US
en_US.iso885915
en_US.utf8
# locale -a | wc -l
495
EDIT3(正解後):
# unsetenv LC_PAPER
# unsetenv LC_ALL
# ls -1d /*/Gabriel_Faur?
/music/Gabriel_Fauré
このLC_PAPER=a4
変数は、UTF-8でエンコードされたUnicode文字の印刷を防ぎます。画面上!
答え1
それは何ですかlocale: Cannot set LC_ALL to default locale: No such file or directory
使用したいロケールの1つが存在しないというメッセージが表示されます。環境変数とは何の関係もなく$LC_ALL
、環境変数に基づいてローカライズを初期化する呼び出しがNULLを返したときにエラーを報告するだけです。locale
これは、さまざまな変数のいずれかで構成されたロケールが見つからないことを示します。setlocale(LC_ALL, "")
LC_*/LANG
ここでは他のすべての項目をオーバーライドするので。このシステムの有効なロケール名ではないため、エラーが発生することLC_ALL=en_US.UTF-8
が問題ですLC_PAPER=a4
。a4
setlocal(LC_ALL, "")
失敗時のsetlocale()
動作はデフォルトでCロケールに設定されます。ここで、文字エンコーディングはASCIIです。 Cロケールでは、各バイトは文字ですが、0xc3と0xa9はASCII形式ではないため、不明な文字なので、出力が端末に到達するとアクティブにls -q
なります。-q
?
次のコマンドを使用して、システムで使用可能なロケールのリストを表示できます。
locale -a
a4
そこでは見つからないかもしれません。用紙サイズをA4にするには、次のようにlocale -k LC_PAPER
出力します。
height=297
width=210
paper-codeset="UTF-8"
ヨーロッパのロケールを使用することもできます$LC_PAPER
。en_GB.UTF-8
答え2
locale
OpenSuseでは、以下を使用して削除の問題を解決できます。
zypper in glibc-locale
en_GB
MicroOs
イメージを作成するときにロケールを使用するために必要です。kiwi