hp-ux zroff プログラミング 文字コード
文字コードの勉強をした。
文字コードなんて考えたのは初めてだったので、いろいろ調べた。
たぶんプロの人から見たら「鼻くそ」だけれど、自分は「すった」だから勘弁してちょ。
まず、
LANG=ja_JP.SJIS で include <stdio.h> #include <locale.h> #include <wchar.h> int main() { char *hoge = "あいう"; printf("%s\n",hoge); wchar_t *whoge = L"えお"; setlocale(LC_ALL,""); wprintf(L"%ls\n", whoge); return 0; } というプログラムを書く。 次に、 /usr/local/bin/gcc foo.c --input-charset=cp932 --exec-charset=cp932 とコンパイルする。 コイツを実行すると、 $ ./a.out あいう と表示される。 次に、 $ export LANG="ja_JP.utf8" として、実行すると、 $ ./a.out えお と表示される。 次に、 $ export LANG="ja_JP.eucJP" とやると、 $ ./a.out となる。
はまった理由はいろいろあるが、自分が参考にしたC言語の本が、
wprintf(L"%s\n", whoge);
とフォーマットに%sを指定していたため。
でも、windowsではコンパイルできるらしい。
それと、iconvはhp-uxで開発されたにもかかわらず、
/bin/iconvの本家のiconvはcp932を認識しない。
error: conversion from cp932 to UTF-8 not supported by iconv
と出る。
hp純正のgccはこのiconvを使って、UTF-8に変換しようとするので、コンパイルは失敗する。