write
プログラムを使用してメッセージを送信するときにUTF-8文字をどのように使用しますか?
私は次を送る:
write user2
Ehilà! Com'è?
しかし、受信者は以下を得る。
Message from user1@samehost on pts/1 at 21:08 ...
EhilM-CM- ! Com'M-CM-(?
マシンは同じで、LANG
konsoleでもすでに同じです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年代のアプローチのおかげで、これが私たちが得るものです。