あるプログラマの日記

プログラマのメモ、出来事、考えたこと、勉強とかの雑記

文字エンコードの変換

(EUC-JPのC言語のソースファイル内の文字コードをShift-JISに変換したい場合)

#include <unistd.h> 
#include <iconv.h>

...

    iconv_t cd = iconv_open( "Shift-JIS", "EUC-JP" );
    char* srcStr = orgBuf;
    char* dstStr = bufffer;
    size_t srcLen = strlen( srcStr );
    size_t dstLen = sizeof( buffer );

    memset( dstStr, 0, dstLen );
    size_t result = iconv( cd, &srcStr, &srcLen, &dstStr, &dstLen );
    if( result == -1 ){
        // error
    }else{
        write( fd, dstStr, result );
    }
    close( fd );
    iconv_close( cd );
...