2013-07-26 1 views
1

UTF-8 문자열을 C/POSIX 로켈 문자열로 변환하려고합니다.
UTF-8 문자열은 "abc123 £"(bash "abc123 \ 302 \ 243 "`)iconv()를 사용한 UTF-8에서 C/POSIX 로케일 변환이 실패합니다.

  1. iconv_open (" ","UTF-8 "); // ""는 기본 프로그램 로캘을 의미합니다. 즉, C
  2. iconv_open ("UCS-2LE", "UTF-8");

의 iconv()의 경우 1에서 나에게 EILSEQ을 반환하지만 성공

그 이유는 무엇입니까 경우 2에서?
또한 어떻게 UTF-8 문자열을 'C'로켈 문자열로 변환 할 수 있습니까?

답변

1

당신의 C 로케일이 £에 대한 문자가없는 문자 세트 (아마 US-ASCII)를 사용하고, 문자열 가 손실없이 변환 할 수 없습니다 수 있기 때문이다.

+0

.. 두 번째 호출은 입력 문자열에 16 바이트 UC 문자가 포함되어 있기 때문에 성공합니다 (단 32 비트 문자는 실패합니다). – usr2564301