エンコードの問題:QtアプリケーションはファイルからASCII以外の文字をすべて削除します。

エンコードの問題:QtアプリケーションはファイルからASCII以外の文字をすべて削除します。

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

関連情報