[C言語]Unicode

Unicodeとは、符号化文字集合や文字符号化方式などを定めた文字コードの業界規格
gccのデフォルトはutf-8
c言語で文字列を扱うにはマルチバイトセットとUnicodeがある

#include <stdio.h>

int main(void){
	char str[] = "あいうえお順";
	printf("%s\n", str);

	return 0;
}

$ ./main
あいうえお順
-> 日本語で出力されます

char str[] = "\u3042\u3044\u3046";

$ ./main
あいう

C言語では、wchar_t型がワイド文字型と呼ばれ、Unicode文字を表現する際に使われる
文字を「L”」で囲むと、その文字を表現するワイド文字型の数値となる
wchar_t 型を使用する際には、ロケール(地域)を設定する必要がある
mac OSやLinuxでは、ワイド文字型は通常は32ビット

#include <stdio.h>
#include <wchar.h> //linuxでwcharを使うのに必要
#include <locale.h>

int main(void){
	wchar_t wc = L'a';
	setlocale(LC_ALL,"ja_JP.UTF-8");;
	wprintf(L"変数wcに格納された文字は%c\n", wc);
	wprintf(L"変数wcに格納された文字は%4x\n", wc);

	return 0;
}

$ ./main
??wc?????????a
??wc????????? 61

あれ、wprintfだと文字化けするな。何故だ。