iconv_open失敗
いつもお世話になっております。
OpenIndiana
NetBeansIDE 7.1でc++のプログラミングをしているのですが、下記コードで
SHIFT-JISを指定すると
iconv open: Invalid argument
となってしまいます。
SHIFT-JISの文字コード関係の何かのインストール等が不足しているのでしょうか。
locale -a
というコマンドを実行してみたのですが、
UTF-8に関係しそうなものは入っていたのですが、SHIFT-JIS(PCK?)
のようなものは入ってなさそうでした。
どなたかご教授よろしくお願いいたします。
どなたかご教授よろしくお願いいたします。
int main(int argc, char** argv) {
int ret;
// ret = convert("UTF-8", "EUC-JP",//成功
// ret = convert("UTF-8", "SHIFT_JIS",
ret = convert("UTF-8", "SHIFT-JIS",
"日本語テストメッセージおはよう",
outbuf, sizeof(outbuf));
if (ret) {
printf("%s\n", outbuf);
}
else {
printf("Oops!\n");
}
return 0;
}
int convert(char const *src,
char const *dest,
char const *text,
char *buf,
size_t bufsize)
{
iconv_t cd;
size_t srclen, destlen;
size_t ret;
cd = iconv_open(dest, src);
if (cd == (iconv_t)-1) {
perror("iconv open");
return 0;
}
srclen = strlen(text);
destlen = bufsize - 1;
memset(buf, '\0', bufsize);
ret = iconv(cd, &text, &srclen, &buf, &destlen);
if (ret == -1) {
perror("iconv");
return 0;
}
iconv_close(cd);
return 1;
}