logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

Iconv 사용법 소스

by digipine posted Nov 01, 2017
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

/* * iconv를 활용한 코드 변환 (EUC-KR <-> UTF-8) * gcc 버전에 따라 glibc에 포함된 경우는 -lc를 하고 그렇지 않은 경우는 -liconv를 링크한다. * */

#include "stdio.h"
#include "string.h"
#include "iconv.h"
#include "error.h"

int main()
{
	int err = 0;
	char buf[1024];

	int ret;
	iconv_t it;
	char ksc_buf[1024] = "한글과 유니코드";
	char utf_buf[1024] = {0x00, }; 
	size_t in_size, out_size;

	sprintf(ksc_buf, "%s", "한글과 유니코드");
	memset(utf_buf, '\0', 1024);

	char *input_buf_ptr = ksc_buf; 
	char *output_buf_ptr = utf_buf;

	in_size = strlen(ksc_buf);
	out_size = sizeof(utf_buf);
	/************************************************************************/
	it = iconv_open("UTF-8", "EUC-KR"); // EUC-KR을 UTF-8로
	ret = iconv(it, &input_buf_ptr, &in_size, &output_buf_ptr, &out_size);
	if (ret < 0)
	{
		err = errno;
		strerror_r(errno, buf, sizeof(buf) );
		printf("ret : %d, errno : %d(%s)\n", ret, errno,buf);
		return(-1);
	}
	else
	{
		printf("[%s](%d) => [%s][(%d)\n", ksc_buf, in_size, utf_buf, out_size);
	}
	iconv_close(it);
	
	/************************************************************************/
	input_buf_ptr = utf_buf;
	output_buf_ptr = ksc_buf;

	in_size = strlen(utf_buf);
	out_size = sizeof(ksc_buf);

	it = iconv_open("EUC-KR", "UTF-8"); // UTF-8을 EUC-KR로
	ret = iconv(it, &input_buf_ptr, &in_size, &output_buf_ptr, &out_size);

	if (ret < 0)
	{
		printf("ret : %d, errno : %d\n", ret, errno);
		return(-1);
	}
	else
	{
		printf("[%s](%d) => [%s][(%d)\n", utf_buf, in_size, ksc_buf, out_size);
	}
	iconv_close(it);
	/************************************************************************/
	return 0;
}
TAG •

List of Articles
No. Subject Author Date Views
105 ALM의 등장 배경, 오해와 진실 digipine 2017.10.28 378
104 ATmega8 MCU 간의 TWI 기능을 이용한 I2C 통신 digipine 2017.11.02 6009
103 AWS EC2 Ubuntu 용 Docker 설치 스크립트 digipine 2021.09.01 350
102 Bitbucket에서 SSH 키 등록하고 사용하는 방법 (맥/리눅스) file lizard2019 2023.06.22 1041
101 C/C++ struct 패딩(padding) 원리 이해 lizard2019 2019.03.04 2156
100 Certbot으로 무료 인증서 발급 받기 digipine 2020.09.03 534
99 CMM / CMMI 란 무엇인가? digipine 2017.10.28 2473
98 Compile FFmpeg on Ubuntu, Debian, or Mint digipine 2017.11.02 330
97 Docker Compute Engine Ubuntu에서 Docker 설치 방법 lizard2019 2021.04.15 464
96 Docker 모든 컨테이너를 Stop 또는 Remove 하는 방법 digipine 2021.09.01 206
95 Docker에서 Phabricator 최신버전 설치 및 버전 확인 방법 file lizard2019 2021.04.15 1407
94 FFServer RTSP Audio Server Config digipine 2023.05.12 240
93 FFT (Fast Fourier Transform) 고속 푸리에 변환 예제 소스 digipine 2017.10.29 12559
92 gcc thread and mutex 사용법 lizard2019 2019.02.27 1209
91 Git Commit 취소 관련 명령어 정리 1 digipine 2017.11.02 1332
90 Git Commnd 사용법 정리 digipine 2017.11.02 264
89 Git Http Backend Upload Size 설정 - Http 500 Error 해결 digipine 2017.11.02 2077
88 Git 서버 구축 - 우분투[Ubuntu] digipine 2017.11.02 309
87 git 환경 설정 및 명령어 정리 digipine 2017.11.03 427
86 Golang Channel 사용법 정리 digipine 2021.10.22 417
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6