오늘도 실수.. iconv
Programming/C 2010. 6. 24. 23:08
문자열을 변환하는데.. "춏" 이런 글자가 나오면 문제가 생기길래..
로케일 문자에러가 생긴다는 생각은 했는데...
암튼 막 문제가 생기는거 같은 부분을 쭉쭉 타고 역으로 올라가다보니깐 (한시간 더 찾았다 -_-)
perror(); 써서 확인해보니깐
"부적절하거나 불완전한 다중바이트 또는 광역 문자" 라는 메세지가 뜨고.....
그래서 설마 하며 #define한걸 보니
UTF8 => EUCKR로 변환하는건 옵션을 붙였는데
EUCKR=> UTF8로 변환할때는 옵션을 안붙였네 아놔...
아나 iconv_open 하는 부분의 //IGNORE 가 빠져 있음 ....
//IGNORE 추가....
#define PRINTED_LOCALE "UTF8 //IGNORE" /* */
결국엔
iconv_open("EUCKR //IGNORE", "UTF8 //IGNORE"); // 이런식이 되시겠다.... 맞나 이게...
맨 페이지 아저씨는 이렇게 말씀하셧따.
- 요약하자면... 그냥 로게일 뒤에
"//IGNORE" 써주면 인식 못하는 문자는 무시한다는거구
"//TRANSLIT"는 iconv_open이 비슷한 문자를 알아서 때려넣어(?) 준다는것
오늘의 병신짓 ㅜㅜ.. 이젠 출력되다가 중간에 끊어먹는 버그 해결
에휴 시간 아까워...
로케일 문자에러가 생긴다는 생각은 했는데...
암튼 막 문제가 생기는거 같은 부분을 쭉쭉 타고 역으로 올라가다보니깐 (한시간 더 찾았다 -_-)
perror(); 써서 확인해보니깐
"부적절하거나 불완전한 다중바이트 또는 광역 문자" 라는 메세지가 뜨고.....
그래서 설마 하며 #define한걸 보니
#define LRC_FILE_LOCALE "EUCKR //IGNORE" /* */
#define PRINTED_LOCALE "UTF8" /* */
#define PRINTED_LOCALE "UTF8" /* */
UTF8 => EUCKR로 변환하는건 옵션을 붙였는데
EUCKR=> UTF8로 변환할때는 옵션을 안붙였네 아놔...
아나 iconv_open 하는 부분의 //IGNORE 가 빠져 있음 ....
//IGNORE 추가....
#define PRINTED_LOCALE "UTF8 //IGNORE" /* */
결국엔
iconv_open("EUCKR //IGNORE", "UTF8 //IGNORE"); // 이런식이 되시겠다.... 맞나 이게...
맨 페이지 아저씨는 이렇게 말씀하셧따.
//TRANSLIT
When the string "//TRANSLIT" is appended to tocode, transliteration is activated. This means that when a character cannot be represented in the target
character set, it can be approximated through one or several similarly looking characters.
//IGNORE
When the string "//IGNORE" is appended to tocode, characters that cannot be represented in the target character set will be silently discarded.
When the string "//TRANSLIT" is appended to tocode, transliteration is activated. This means that when a character cannot be represented in the target
character set, it can be approximated through one or several similarly looking characters.
//IGNORE
When the string "//IGNORE" is appended to tocode, characters that cannot be represented in the target character set will be silently discarded.
- 요약하자면... 그냥 로게일 뒤에
"//IGNORE" 써주면 인식 못하는 문자는 무시한다는거구
"//TRANSLIT"는 iconv_open이 비슷한 문자를 알아서 때려넣어(?) 준다는것
오늘의 병신짓 ㅜㅜ.. 이젠 출력되다가 중간에 끊어먹는 버그 해결
에휴 시간 아까워...
'Programming > C' 카테고리의 다른 글
포인터 연습 (6) | 2011.05.27 |
---|---|
간단한 디버그 함수 (0) | 2010.08.16 |
아아 또 실수~! (4) | 2009.06.22 |
주의력 부족 (2) | 2009.06.22 |
이진트리를 만들고나서....아 망했어요... (2) | 2009.05.25 |