「書き込み」メッセージプログラムでUTF-8文字を使用する

「書き込み」メッセージプログラムでUTF-8文字を使用する

writeプログラムを使用してメッセージを送信するときにUTF-8文字をどのように使用しますか?

私は次を送る:

write user2
Ehilà! Com'è?

しかし、受信者は以下を得る。

Message from user1@samehost on pts/1 at 21:08 ...
EhilM-CM- ! Com'M-CM-(?

マシンは同じで、LANGkonsoleでもすでに同じですen_US.UTF-8

ベストアンサー1

write上位ビットを「メタ」(Meta+キーまたはキー)として解釈するようですEsc。ソースコード(wr_fputs()の機能write.c)を少し見てみると、これを確認できます。制御文字は で表され、^X上位ビットセット文字は で表されますM-X。残念ながら、ロケール、ターミナル、エンコーディングはこれとは関係ありません。writeわずか7ビットです。

私はUnicodeファンですが、これは少し曲がっています。writeターゲットTTYを開き、ここに書くだけです(魔法は必要ありません)。リモートTTYを制御するプロセスに文字エンコーディングを理解させる簡単な方法はありません。存在しても、すべてのエンコーディングを他のすべてのエンコーディングに変換できるわけではありません。変換しないと、KOI8-RからISO-8859-1コンソールにメッセージを送信できません。write単純な70年代のアプローチのおかげで、これが私たちが得るものです。

おすすめ記事