Retourner au contenu associé (entrée de forum : Iconv)
Posté par gc le 08 juillet 2004 à 09:28. En réponse au message Iconv. Évalué à 3.
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
# iconv_
Posté par gc . En réponse au message Iconv. Évalué à 3.
#include <iconv.h>
char* iconv_(char* s, char* from_charset, char* to_charset) {
iconv_t cd = iconv_open(to_charset, from_charset);
char* retval = s;
if (cd != (iconv_t) (-1)) {
size_t s_len = strlen(retval);
/* the maximum expansion when converting happens when converting
tscii to utf-8; each tscii char can become up to 4 unicode chars
and each one of those unicode chars can be 3 bytes long */
char *buf = alloca(4 * 3 * s_len);
{
char *ptr = buf;
size_t ptr_len = 4 * 3 * s_len;
if ((iconv(cd, &s, &s_len, &ptr, &ptr_len)) != (size_t) (-1)) {
*ptr = 0;
retval = buf;
}
}
iconv_close(cd);
}
return strdup(retval);
}