1

いくつかの Unicode 文字を印刷するには? UTF-8 エンコーディングを設定しましたが、印刷できません。バイトの連続ストリームで (c2 82 c2 81 c2 80 0) として 16 進数で Unicode 文字を取得しています。しかし、最初に文字ポインターをポイントして Unicode 文字を印刷しようとすると、印刷されません。なんで?

   char s[]={0xc2,0x82,0xc2,0x81,0xc2,0x80,0x00};
   printf("%s",s);

Linux 環境で C を使用する。

4

2 に答える 2

4

「表示」している文字は次のとおりであるため、端末が UTF-8 で動作するように構成されていても、あまり表示されません。

0xC2 0x82 = U+0082
0xC2 0x81 = U+0081
0xC2 0x80 = U+0080

これらは C1 セットの制御文字です。私は文書化されたデータファイルを持っています:

# C1 Controls (0x80 - 0x9F) are from ISO/IEC 6429:1992
# It does not define names for 80, 81, or 99.

80 U+0080
81 U+0081
82 U+0082 BPH BREAK PERMITTED HERE

グラフィック文字を表示していないため、何も表示されません。たとえば、0x82 を 0xA2 に変更すると (および 0x81 を 0xA1 に、0x80 を 0xA0 に)、目に見える出力が得られる可能性が高くなります。

0xC2 0xA2 = U+00A2
0xC2 0xA1 = U+00A1
0xC2 0xA0 = U+00A0

A0 U+00A0 NO-BREAK SPACE
A1 U+00A1 INVERTED EXCLAMATION MARK
A2 U+00A2 CENT SIGN

$ ./x
¢¡ 
$

そして、あなたが本当に上手なら、逆さまの感嘆符の後に改行なしのスペースを見ることができます.

于 2013-04-05T14:27:51.000 に答える