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に変換しようとするので、コンパイルは失敗する。