2004年11月25日
[s-okita@localhost c]$ cat iconv_test.c /* iconv_test.c */ #include#include #include int main(int argc, char *argv[]) { iconv_t cd; char *test_data = "、ロ、イ"; char src_buf[128]; char dest_buf[128]; char *s = src_buf; char *d = dest_buf; size_t srcLen = sizeof(src_buf); size_t destLen = sizeof(dest_buf); memset(src_buf, sizeof(src_buf), 0); memset(dest_buf, sizeof(dest_buf), 0); memcpy(src_buf, test_data, strlen(test_data) + 1); printf("%d\n", strlen(test_data)); printf("%s\n", src_buf); /* from EUC-JP to SHIFT_JIS */ printf("iconv start\n"); cd = iconv_open("SHIFT_JIS", "EUC-JP"); printf("convert\n"); iconv(cd, &s, &srcLen, &d, &destLen); printf("dest_buf:%s\n", dest_buf); printf("end\n"); iconv_close(cd); return 0; } [s-okita@localhost c]$ gcc -Wall -O2 -o iconv_test iconv_test.c terminalをEUC-JP表示にして実行してみます。 [s-okita@localhost c]$ ./iconv_test 4 ほげ iconv start convert dest_buf:? end 次に、terminalをSHIFT_JIS表示にして実行してみます。 [s-okita@localhost c]$ ./iconv_test 4 、ロ、イ iconv start convert dest_buf:ほげ end 上記が正常に動作しているのでiconv関数での国際化対応に成功しています。