[gcc]iconvで文字エンコードを変換するサンプルプログラム

単にテキストファイル等の文字エンコードを変換するのであれば、iconvコマンドを使用して変換すれば良いのですが、 プログラム内部で取得した文字列の文字エンコードを変換したい場合もあります。

以下のプログラムはLinuxやCygwinの環境でC言語のプログラムからiconvを呼び出して文字エンコードを 変換する場合の手順を示したサンプルプログラムです。

--- tst_iconv.c ---

#include <stdio.h>
#include <iconv.h>

#define  BUFSIZE  1024

char outbuf[BUFSIZE];

int convert(char const *src,
            char const *dest,
            char const *text,
            char *buf,
            size_t bufsize);

main(void)
{
    int ret;

    ret = convert("SHIFT-JIS", "UTF-8",
                  "日本語テストメッセージおはよう",
                  outbuf, sizeof(outbuf));
    if (ret) {
        printf("%s\n", outbuf);
    }
    else {
        printf("Oops!\n");
    }
}

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

コンパイル方法
$ gcc -o tst_iconv tst_iconv.c -liconv

ICONV

[1982] Posted by kagahiro at 2010/07/26 09:54:29
オープン | 0 point | Link (2) | Trackback (0) | Comment (0)

キーワード

C言語 プログラミング 

ジャパンのホームページ


[gcc]iconvで文字エンコードを変換するサンプルプログラム 関連リンク

C言語
C言語とは、AT&T社のベル研究所でデニス・リッチー氏とカーニハン氏の両氏によって開発されたプログラミング言語のことで、アメリカ規格協会(ANSI)によって1986年に標準化され、国際標準化機構(ISO)や日本工業規格(J...
[C言語]1バイト(8bit)の10進数を2進数の文字列に変換するコード
1バイト(8bit)の10進数を2進数の文字列に変換するコードのC言語版です。C言語では、PerlやPHPなどのように2進文字列に変換してくれる便利な関数は関数はないので、ビット演算子を使ってビットのオン・オフを判定して...

[gcc]iconvで文字エンコードを変換するサンプルプログラム トラックバック

トラックバックURL :


[gcc]iconvで文字エンコードを変換するサンプルプログラムへのコメント


詳細の入力フィールドを表示する

おすすめ  (チェックしてコメントすると最新情報に掲載)
コメント :

< 前の投稿      次の投稿 >

アクセスランキング

今日のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (130 PV)
  2. USTREAM(ユーストリーム) 日本語版 無料のライブ映像配信サービス (27 PV)
  3. 今日(2020年7月7日、火曜日)のドル円、ユーロドル、ポンドドル相場予想 #FX #デイトレード #新型コロナ #リスクオフ (16 PV)
  4. Google Finance(グーグルファイナンス)日本版が表示されるようになってますが・・・ (16 PV)
  5. Google News (グーグルニュース)日本版 (15 PV)
  6. [gcc]iconvで文字エンコードを変換するサンプルプログラム (10 PV)
  7. Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (9 PV)
  8. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (9 PV)
  9. ウェブページを1回だけリロード(再表示)する方法 (8 PV)
  10. SQLのSELECT文でn件目からm件目までのレコードを取得する方法(Oracle、SQL Server、MySQL、PostgreSQL) (7 PV)

今月のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (1710 PV)
  2. Google News (グーグルニュース)日本版 (341 PV)
  3. USTREAM(ユーストリーム) 日本語版 無料のライブ映像配信サービス (213 PV)
  4. Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (166 PV)
  5. Google Finance(グーグルファイナンス)日本版が表示されるようになってますが・・・ (165 PV)
  6. ウェブページを1回だけリロード(再表示)する方法 (100 PV)
  7. [将棋]ユーチューバーのクロノさんが将棋ウォーズ運営からアカウント停止の警告を受ける #ソフト指し #複垢 #アカBAN (99 PV)
  8. [Perl]UTF-8でエンコードされた文字列の文字数を取得するコード (92 PV)
  9. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (75 PV)
  10. [gcc]iconvで文字エンコードを変換するサンプルプログラム (72 PV)

アクセス統計

ディレクトリ

関連サイト