Qtアプリケーションは、私のGentooシステムのISO-8859エンコーディングファイルからラテン語以外の文字を削除しています。実際、私はKDiff3とP4Mergeを使って2つのドイツ語ファイル(「Wählen」から「Whlen」を生成)をマージしようとしています。どちらのツールも発音区別記号を表示せず、ファイルを保存するとファイルから消えます。 Courier New は Dejavu Monospace フォントを使用して同じ動作を表示します。
UTF-8でエンコードされたファイルがツールに提供されると、ラテン語以外のすべてのテキストが正しく処理されます。
GTK Meld(および他のすべてのGTKアプリケーション)は、文字(ISO-8859-1およびUTF-8)を非常にうまく処理します。私はロケール構成だと思いますが、何が間違っているのかわかりません...
どんなアイデアがありますか?
構成:
$ locale -a
C
POSIX
de_DE
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8
de_DE@euro
deutsch
en_US
en_US.iso88591
en_US.utf8
german
$ locale
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=C
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="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=
Qt 使用フラグx11-libs/qt-core-4.8.2:4
:
exceptions glib iconv qt3support ssl (-aqua) -c++0x -debug -icu -pch
(-optimized-qmake%) (-qpa%)
答え1
UTF-8でエンコードされたファイルがツールに提供されると、ラテン語以外のすべてのテキストが正しく処理されます。
それから私はあなたに提案します録音ファイルをUTF-8に変換してマージし、必要に応じて再エンコードします。
GTK Meld(および他のすべてのGTKアプリケーション)は、文字(ISO-8859-1およびUTF-8)を非常にうまく処理します。
これをバグではなく機能と呼ぶことができるようです。アプリケーションが現在のロケールの文字として解釈できない特定のバイトシーケンスを表示する場合は、いくつかのオプションがあります。おそらくGTKがすることがまさに推測でしょう。あるいは、そのバイトをエラーと見なしてファイルから削除することもできます。あるいは、ユーザーに問題を通知する方が良いかもしれませんが、明らかにKDEはそれほど遠くはありません。
私はロケール構成だと思いますが、何が間違っているのかわかりません...
ロケールは、テキストファイルをUTF-8でエンコードする必要があることを示します。しかし、あなたのファイルはそうではありません。したがって、違いがあります。ファイルを記録したり、別のロケールで関連プロセスを開始したりすると、この問題を解決できます。そのLC_CTYPE
側面は関連性があるはずですが、LC_ALL
確実にするために最初の側面から始めてください。コマンドラインからコマンドを呼び出すときは、コマンドの前に正しい設定を追加するだけです。
LC_CTYPE=en_US.iso88591 kdiff3 foo bar