Xerces-C++ 로 한글 xml 처리하기
글쓴이: linuxqna / 작성시간: 수, 2003/04/23 - 10:44오전
먼저 제 상황을 설명드리겠습니다.
문자데이터 부분이 한글로 된 XML 파일을 파싱해서,
이 데이터 부분을 찍어내는 간단한 프로그램입니다.
일단 Xerces API가 euc-kr 을 direct로 처리 못한다고해서
문서를 UTF-8로 인코딩한후에
파싱한후 출력단에서 iconv() 로 다시 UTF-8 --> EUC-KR 변환을 해서 출력할라고 합니다.
그런데 문제는
DOMString.transcode()로 char* 문자열을 얻어내는데
문자열이 제대로 안들어오는것 같아요 당연히 iconv()로 변환해도
이상한 문자들만 나오고
transcode()에서 뭔가 변환이 잘못되고 있는것 같기도 하고
아무튼 Xerces로 한글처리에대한 경험있으신분의 조언 부탁드립니다.
Forums:
해결했습니다.
XMLPlatformUtils::fgTransService->makeNewTranscoderFor()
함수로 transcode() 의 인코딩변경방식을 지정해 놓으니
잘됩니다.
감사합니다.
xerces 에서 한글 사용 및 iconv 사용하기
저 역시도 XMLPlatformUtilsfgTransService->makeNewTranscoderFor() 를 이용해서 인코딩 방식을 지정했음에도 불구하고 char * 에 있는 문자열이 DOMString 이나 XMLString 으로 변환되지를 않더군요...
혹시나 하여 질문 올립니다..
iconv 사용법도 찾아보긴 했습니다만..
파일에서 char * 로 모두 읽어들여서 iconv 로 변환한 결과를
DOMString 에 줘야 하는건가요...
잘 못 찾고 있는건지 원. -_-;
char * 는 이상한 문자도 잘 읽더군요. 그렇다면 C에서 iconv를 사용하는 이유는 무엇인가요? 다른 포맷의 결과 파일을 만들어 낼 때 사용하는건가...
아.. 복잡합니다... ㅠ.ㅠ
xml 파일의 encoding을 "windows-1252"로 하면제대
xml 파일의 encoding을 "windows-1252"로 하면
제대로 읽더군요.
<?xml version="1.0" encoding="Windows-1252"?>
이렇게 하면 한글 데이터가 인터넷 익스플로러에서는 깨지지만 xerces에서는 제대로 읽어들입니다.
.. 테스트해보니.. euc-kr도 잘 되고 utf-8도 잘 되는군요 -
.. 테스트해보니.. euc-kr도 잘 되고 utf-8도 잘 되는군요 -_-aaa
오래된 질문인데 답을 얻지 못해서 다시 올립니다. :]이 쓰레드를
오래된 질문인데 답을 얻지 못해서 다시 올립니다. :]
이 쓰레드를 보고 XMLPlatformUtils::fgTransService->makeNewTranscoderFor() 함수를 들여다봤는데, 위의 포스트처럼 XMLString::transcode()의 작동 방식을 고치는게 아니라 새로운 트랜스코더를 얻어서 그 트랜스코더를 이용해서 transcodeTo(), transcodeFrom()을 하는 형식이더군요.
그렇다면 transcode()가 소용이 없지 않습니까? transcode()가 내부에서 사용하는 gTranscoder를 바꿔야 제가 원하는 동작이 가능할 것 같은데 그 변수는 내부 변수고 .. 답을 알고싶네요.
----------------------------
May the F/OSS be with you..
댓글 달기