MZC4で無料Windowsアプリ開発

日本語で「こんにちは世界」

戻る | 前へ | 次へ


MSYS2で日本語表示

MSYS2で日本語表示を試してみましょう。

サクラエディタで次のような内容のテキストファイル「hello2.c」を作成します。

#include <stdio.h>
int main(void)
{
    printf("こんにちは世界\n");
    return 0;
}

さらに「gcc -o hello2 hello2.c」を実行して下さい。「hello2.exe」というEXEファイルができれば成功です。 「./hello2.exe」と入力して「Enter」キーを押せば、「こんにちは世界」と表示され、、、 なくて、文字化けします。

[MSYS2で文字化け]

これは、Windowsのテキストファイルの文字セットがShift_JIS(シフトジス)で、 MSYS2で使われているBash(バッシュ)というシェルでは、文字セットがUTF-8(ユーティーエフ・エイト)であり、 文字セットが違うので、文字データの解釈が違うから、文字化けが起こったのです。

「文字セット」「文字集合」「文字コード」「エンコーディング」「文字符号化方式」、様々な言い方がありますが、 同じ意味です。文字列をどのようにバイト列で表すのか、バイト列をどのようにテキストとして解釈するかを 意味します。

一番有名な文字セットはASCIIです。日本語の文字セットは、Shift_JIS、UTF-8、UTF-16などがよく使われます。

参考資料: 文字集合ASCIIShift_JISUTF-8UTF-16

[サクラエディタで文字セット指定]

サクラエディタで「ファイル」メニューから「名前を付けて保存」を選び、「文字コードセット」で「UTF-8」を選んで 保存しなおし、再ビルドすると、正しく「こんにちは世界」と表示されます。

[MSYS2で文字化け修正]

VS2017で日本語表示

次に、Visual Studio 2017で同じプログラムを試してみましょう。

前回と同じようにして「hello2」プロジェクトを作成し、「hello2.cpp」を次のような内容にします。

#include "stdafx.h"

int main()
{
    printf("こんにちは世界\n");
    fflush(stdout);
    getchar();
    return 0;
}

そしてビルド。日本語VSの文字コードは、通常Shift_JISであり、VSは、Bashではなく通常のコマンドプロンプトを使います。 コマンドプロンプトの文字コードは、規定値のShift_JISなので文字コードが一致し、文字化けしません。

文字セットが違うと、テキストデータの解釈と表現方法が違います。SJISで保存した場合と、UTF-8で保存した場合で BZで開いて確認してみて下さい。

まとめ:日本語の場合、文字コードを合わせないと、文字化けする(それだけかい!)。


© 2018 片山博文MZ. All Rights Reserved.

戻る | 前へ | 次へ

inserted by FC2 system