Linuxカーネルによって実装されたttyは常にUTF-8を使用してデータをレンダリングしますか?

Linuxカーネルによって実装されたttyは常にUTF-8を使用してデータをレンダリングしますか?

そんなようです。私は読んだIUTF8ただし、ドキュメントは行編集を実行するときに入力をUTF-8として扱うことができることを示しています。

しかし、出力はどうですか? GUI端末を使用している場合、通常はエンコーディングを変更してptyの出力バッファにバイトをレンダリングできますが、カーネルのtty実装はどうですか?

Linuxは常にUTF-8を使用してtty出力バッファのバイトをレンダリングしますか?

ベストアンサー1

「Linux」自体はこれを行いません。アプリケーション(ターミナルエミュレータを含むがこれに限定されない)は、これを行うこともできないかもしれません。

Linuxコンソール端末は、UTF-8を解釈したり解釈したりすることができない端末エミュレータです。よりconsole_codes(4)詳しくはマニュアルページをご覧ください。移行コントロールを一覧表示する必要があります。出力たとえば、文字セットは次のようになります。

   ESC %              Start sequence selecting character set                
   ESC % @               Select default (ISO 646 / ISO 8859-1)              
   ESC % G               Select UTF-8                                       
   ESC % 8               Select UTF-8 (obsolete) 

しかし、ページの最後のコメントこの変化2006年には、Web形式に変換する過程で一部のテキストが失われたと疑われました。 他のウェブサイトより完全な表現を提供します(このサイトにも上記の問題がありますが、ここ)。

本当に欲しいなら読むマニュアルページを使用すると、ローカルコンピュータはおそらく2つ以上の作業を行います。

次に終了するシーケンスを使用して UTF-8 モードをオフまたはオンにすることができます。@またはG、それぞれ。私は時々このスクリプトを使ってこれを行います。

#!/bin/sh
# send character-string to enable UTF-8 mode
if test ".$1" = ".off" ; then
        printf '\033%%@'
else
        printf '\033%%G'
fi

(そしてこれについてコメントしました。今後誰かが私にこれを行うことができるスクリプトがあることを思い出しました。年をとる私のスクリプトより)。

おすすめ記事