반응형

utf8과 cp949(euc-kr)간에 한글 인코딩 변환을 해본 예제입니다. 


2020. 01. 08 - 최초작성



Ubuntu에서 테스트를 진행하여 입력이 UTF8 입니다.

cp949로 변환했다가 다시 UTF8로 변환하여 정상으로 보이는 것을 확인했습니다.




C언어로 작성하니 malloc로 메모리 할당받았던 것을 free로 해제해줘야 하는 번거로움이 있네요. 

C++에서 한다면 string 타입의 변수로 대입한 후, 바로 메모리를 해제해줘도 됩니다. 


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

char * encoding(char *text_input, char *source, char *target)
{
    iconv_t it;
   
    int input_len = strlen(text_input) + 1;
    int output_len = input_len*2;

    size_t in_size = input_len;
    size_t out_size = output_len;

    char *output = (char *)malloc(output_len);

    char *output_buf = output;
    char *input_buf = text_input;

it = iconv_open(target, source);
    int ret = iconv(it, &input_buf, &in_size, &output_buf, &out_size);

   
    iconv_close(it);

    return output;
}


int main()
{
    char *text_input = "2021 한글 변환 테스트~~";
char *text_ansi = encoding(text_input, "UTF-8", "cp949");
char *text_utf8 = encoding(text_ansi, "cp949", "UTF-8");

    printf("input : %s\n", text_input);
    printf("ansi : %s\n", text_ansi);
    printf("utf8 : %s\n", text_utf8);

    free(text_ansi);
    free(text_utf8);
}



반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts