端末文字エンコードの問題 BitchX

端末文字エンコードの問題 BitchX

私は走ったBitchXこれは、3つの異なるLinuxオペレーティングシステムのうちの2つ(Linux OpenSUSE 11.4およびBackTrack 5 R1)にyakuake / konsole(OpenSUSE)とterminator / tilda(BT 5 R1)を使用して奇妙な疑問符が表示されたためです。

ただし、RoxTermを含むPuppyLinux Lucid 528では、文字は元のように表示されます(ギリシャ文字「fi」)。 SUSEとBTの両方で$ LC_CTYPEの値を確認しましたが、これはPuppy Linuxと同じです(例:en_USなので、utf-8エンコーディングはありません)。

SUSEとBTで(ターミナル設定で)さまざまな文字エンコーディングを試み、変更が見つかりましたが、テキストがまだ時折壊れているため、疑問符の代わりに理解できない奇妙な「u」が表示されます。 s(Puppyでは常に正しく表示されます)。

この迷惑な問題の原因は何ですか?
違いは何で、どのように違いを確認できますか?

答え1

ここでは様々なことが起こっています。

LC_CTYPE=en_USこれが実際に「utf-8なし」を意味するかどうかを最初に確認できますか?

このnl_langinfo機能は次のように役立ちます。

$ python
>>> import locale
>>> locale.setlocale(locale.LC_CTYPE, 'en_US')
'en_US'
>>> locale.nl_langinfo(locale.CODESET)
'ISO-8859-1'

第二に、一度に1つの変数を変更するだけで役に立ちます。たとえば、RoxTermがPuppyLinuxで動作している場合、OpenSUSEやBackTrackでも動作しますか?BitchXバージョンが異なる場合に備えて、どのバージョンを使用しているかを教えてもらえますか?

最後に、IRCは文字エンコード情報を実際に提供しないため、サーバーとチャネルのすべてのユーザーは文字エンコードに同意する必要があります。最近、ほとんどのユーザーがUTF-8を使用しているようですが、設定をUTF-8に変更してみてはいかがでしょうか。


修正する

BitchXがUTF-8をサポートしていないと言われました。

そうすれば、他のユーザーと会話するのに問題が生じそうです。

しかし、他の人がすべてギリシャ語を話し、BitchXを使うなら、おそらくあなたはBitchXを使いたいと思うでしょう。ギリシャ語ISO-8859-7文字セット

私のシステムでISO-8859-7をサポートする唯一の2つのロケールはギリシャ語のロケールですel_GR.iso88597

実行してlocale -aオプションの全リストを確認し、その文字セットを含むオプションを選択します。

答え2

ダイヤモンド内の疑問符は、おそらくクライアントプログラムが文字を受け入れてそれをディスプレイエンジンに渡しますが(私は正しいですが、BitchXは単なるターミナルプログラムですか?)ターミナルはそれをレンダリングできないということです。したがって、これは端末構成の問題である可能性があります。たとえば、選択したフォントにギリシャ文字のグリフが含まれていません。その端末で「hexdump -C」などのコマンドを実行して、他の端末にコピーして貼り付けてテストできます。これにより、phiコードポイント(U + 03C6、つまりutf-8のhexdumpに「CF 86」が表示されます)が表示されます。その場合は、ギリシャ語をサポートするフォントを選択してください。

\u03C6 などの内容が表示されると、ロケールが破損して (Unicode ではない) クライアントが文字を受け入れてその文字に Unicode 処理を適用しますが、直接出力できず、代替モードに切り替えるという意味かもしれません。したがって、SuSEとBTの両方の設定は、非Unicodeエンコーディング(おそらくISO-8859-1)のエイリアスとしてen_USを持っているようです。 en_US.UTF-8を直接設定して効果を比較してみてください。

関連情報