iconv_open 예제

iconv 변환 모듈은 fromcode%tocode.so의 형태로 되어 있으며, 아이콘 함수를 사용하려면 /usr/lib/iconv 디렉토리 아래의 iconv 모듈 라이브러리에 있어야 합니다. 따라서 iconv -l 명령에 의해 나열 된 두 코드 집합 사이 변환할 수 없습니다. 모든 iconv 패키지가 설치되고 필수 모듈을 사용할 수 없는 경우 중간 코드 집합으로 유니코드 인코딩(예: UTF-32)을 사용하여 2단계 변환을 수행할 수 있습니다. 또는 사용자 지정 변환 모듈을 개발할 수 있습니다. 사용자 정의 iconv 변환 모듈을 만들려면 geniconvtbl 유틸리티를 사용합니다. geniconvtbl 유틸리티에 대한 입력 파일 형식에 대한 자세한 내용은 geniconvtbl(4) 맨 페이지를 참조하십시오. UTF-8을 시프트 JIS로 변환하고 싶지만 iconv_open 및 iconv는 Errno 95 (지원되지 않는 작업)를 제공하면 도움이 될 수 있습니까? iconv_t xttx = iconv_open(«UTF-8″,»KOI8-R»); iconv 함수를 사용하면 문자의 코드 변환 또는 한 코드 집합에서 다른 코드 집합으로 문자 시퀀스를 변환할 수 있습니다. iconv_open() 함수는 다양한 코드 집합을 지원합니다. 다음 명령을 실행하여 시스템에서 현재 사용할 수 있는 지원되는 코드 집합 및 해당 별칭에 대한 정보를 표시할 수 있습니다. 함수 iconv_open()에는 첫 번째 매개 변수 OUTPUT 인코딩과 두 번째 매개 변수 INPUT 인코딩이 있습니다. iconv() 함수는 첫 번째 매개 변수 INPUT 변수로, 두 번째 매개 변수는 OUTPUT 변수로 있습니다.

이러한 불일치는 정말 혼란스럽습니다. 대상 코드 집합은 iconv_open() 함수의 첫 번째 인수입니다. 이는 비교적 간단한 예제이므로 문자 내의 바이트에서 변환을 중지하여 발생하는 경계 문제를 처리하지 않습니다. 이 변환 호출은 이전 예제의 변환 설명자 cd를 사용합니다. 위의 예제 프로그램의 출력은 UTF-8 인코딩에서 다음과 같습니다: 불행히도 단점이 있습니다. 이러한 모든 C99 함수는 현재 로캘의 아이디어를 기반으로 합니다. 이것은 setlocale () 호출에 의해 설정된 프로세스 전체의 글로벌 (심각하게! 총, 내가 알고있다)입니다. 따라서 두 개 이상의 인코딩에서 문자를 디코딩하려면 매번 setlocale() 작업을 수행해야 하며, 이 기능은 프로그램의 모든 스레드에서 모든 로캘별 함수에 영향을 줍니다. 고맙게도, glibc적어도 매개 변수로 특히 로캘을 가지고 이러한 모든 함수의 별도의 버전이 있습니다. 예를 들어 mbrtowc_l()을 예로 들 수 있습니다.

그러나 이들은 표준이 아니며, 나는 그들이 얼마나 널리 지원되는지 전혀 모른다. 이 예제주셔서 감사합니다, 그것은 그것에 많은 시간을 퍼팅 / 아웃 아이콘을 사용하여 나를 도왔다. 그러나 하나의 작은 수정 (나는 알고있다, 이 게시물은 3 세이지만, 구글은 🙂 대해 걱정하지 않는다): 여기에 하나의 쿼리. 그래서 CHAR 문자열을 UTF8 String으로 변환하려면 예를 들어 길이 11의 char 문자열을 변환하려면 아래에서 크기를 할당해야합니다.이 «iconv»라이브러리의 C의 간단한 예입니다.

Next Post:
Previous Post: