0

£ISO 8859-1 規格を参照したところ、文字の値がであることがわかりました。0xa3これを c を使用して表示したいので、次のプログラムを作成します。

#include <stdio.h>

int main()
{
        printf( "\\xa3 is: %c.\n", '\xa3' );
        printf( "£ is: %c.\n", '£' );

        return 0;
}

このソース コード ファイルを iso 8859-1 エンコーディングで保存します。そして、私のプログラムがそれぞれを満たす£ときに2回表示されることを願っています。printf%c

しかし、うまくいかないのはなぜですか?目標を達成するためにプログラムを変更するにはどうすればよいですか。

私はLinuxを使用しています。

編集:

その表示は次のようになります。

\xa3 is: �.
£ is: �.
4

2 に答える 2

2

端末が 8859-1 ではなく UTF-8 で実行されているようです。これを試して:

#include <stdio.h>

int main(void)
{
    printf("\\xC2\\xA3 is: %s.\n", "\xC2\xA3");
    printf("£ is: %s.\n", "£");
    return 0;
}

私の Mac (ターミナルは UTF-8 で実行されます) では、出力は次のようになります。

\xC2\xA3 is: £.
£ is: £.
于 2012-11-08T15:02:36.167 に答える
0

出力端子が、この文字に対して (ランダムに) 選択したエンコーディングと一致することを確認する必要があります。ISO 8859-1を使用しているが、端末がたとえばUTF-8を想定している場合、おそらく、表示されているような結果が得られるでしょう。

于 2012-11-08T15:00:18.757 に答える