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だと文字化けするな。何故だ。