• 締切済み

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; }

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> locale -a は関係ないでしょう。iconvが対応しているエンコードを調べるなら iconv -l です。 とりあえず、いろいろと直すところはありましたが、手許の環境ではSHIFT-JISで変換できています。

kaoru424233254
質問者

補足

ご返答ありがとうございます。 iconv -l で調べてみたところSHIFT-JISがなさそうだったので、パッケージマネージャーで iconv/extra をインストールして、再度確認したところ、 PCK (PCK, SJIS, Shift_JIS, SHIFT-JIS, ShiftJIS), PTCP154 (PTCP154), SJIS, という表示がでてきました。 しかし、 iconv open: Invalid argument は相変わらず発生しています。何か不足があるのでしょうか。

関連するQ&A

専門家に質問してみよう