アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっております。
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;
}

A 回答 (1件)

> locale -a


は関係ないでしょう。iconvが対応しているエンコードを調べるなら
iconv -l
です。

とりあえず、いろいろと直すところはありましたが、手許の環境ではSHIFT-JISで変換できています。

この回答への補足

ご返答ありがとうございます。

iconv -l
で調べてみたところSHIFT-JISがなさそうだったので、パッケージマネージャーで
iconv/extra
をインストールして、再度確認したところ、
PCK (PCK, SJIS, Shift_JIS, SHIFT-JIS, ShiftJIS), PTCP154 (PTCP154), SJIS,
という表示がでてきました。
しかし、
iconv open: Invalid argument

は相変わらず発生しています。何か不足があるのでしょうか。

補足日時:2012/03/12 22:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!