libxml2 인코딩 관련 내용은 다음 URL에 기술되어 있다. http://xmlsoft.org/encoding.html
이런 쪽 검색은 코드 내용을 완전히 1:1 검색하지 않는 한.
구글보다 위키가 더 나을 때가 많다.
libxml 의 위키페이지 http://en.wikipedia.org/wiki/Libxml
libxml2 가 한글을 비롯하여 인코딩 문제를 잘 해결하려면 iconv 가 포함되어야 한다.
iconv의 위키페이지 http://en.wikipedia.org/wiki/Iconv
iconv 는 웹 하는 사람들은 많이 들어보았을 것이다. PHP 같은 데서도 종종 쓴다.
임베디드에서 사용할 것이므로 스크래치 박스 상에서 빌드한다.
libiconv 를 다운로드 받은 후 압축을 풀고 빌드한다.
./configure
make
make install
make install 시에 에러가 나지만 /usr/local/lib/ 에 제대로 있는 것을 확인했다면 그것으로 끝이다.
물론 /usr/local/include/libxml2 도 제대로 있는 지 확인한다.
제 위치에 없다면 pkg-config 를 확인한다.
echo $PKG_CONFIG_PATH
그러면 보통 다음과 같이 나온다.
/usr/local/pkgconfig
해당 경로를 확인 했으니 진짜 내용을 살펴보자
cat /usr/lib/pkgconfig/libxml-2.0.pc
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
modules=1
Name: libXML
Version: 2.6.30
Description: libXML library version2.
Requires:
Libs: -L${libdir} -lxml2
Libs.private: -lz -lm
Cflags: -I${includedir}/libxml2
이 정보들은 다음과 같이 사용된다.
pkg-config –libs libxml-2.0
결과 :
-L/usr/local/lib -lxml2
pkg-config –cflags libxml-2.0
결과:
-I/usr/local/include/libxml2
따라서 Makefile 의 gcc 옵션에 (숫자 1 옆에 있는 역따옴표) 묶어서 써주면 알아서 들어간다.
몇몇 configure 파일 들은 가끔 문제를 일으키는 것 같다.
따라서 다음과 같이 pkgconfig 를 또 만들어둔다.
ln -s /usr/lib/pkgconfig /usr/local/lib
libxml2를 빌드한다.
스크래치 박스 상이라면 문제 없다.
./configure –with-iconv –with-http
make
make install
각 위치에 제대로 있는 지 확인한다.
주의사항!
libxml2 홈피에 보면 인코딩에 바로 있는 부분인데.
인코딩 문제 때문에 고생하는 분들이 의외로 있는 것 같다. 기본 중의 기본이다 -_-
(사실은 내가 좀 헤멨다 ㅠ.ㅠ)
돌릴 XML 문서의 최상단에 인코딩을 명시한다.
<?xml version=”1.0″ encoding=”EUC-KR”?>
UTF-8 로 테스트해 본다.
xml 파서가 정상동작하는지 테스트 해보고 싶다면 다음과 같이 한다.
libxml 디렉토리에서..
./testReader –count ./test/wap.xml
결과에 엘레먼트 값이 제대로 나왔다면 성공이다.
이제 임베디드 보드에서 다국어 XML을 파싱하는 기본이 갖추어졌다.
(응?)