-
euc-kr 문제 해결을 위한 iconv :: 마이구미Nodejs 2016. 6. 17. 19:47반응형
이번 글은 Node.js 모듈 iconv에 대해 알아보자.
본인의 경험을 토대로 글을 써보겠다.
본인은 cherrio를 활용하여 네이트 페이지를 크롤링을 시도했다.
살짝 잘 가져오는 지를 확인하기 위해 크롤링을 시도해보았다.
기본적인 예제다.
문제 없는 코드이다.
하지만 예측하지 못한 결과가 나왔다.
문자가 깨진 상태로 출력되었다.
그 이유는 utf-8이 아닌 euc-kr을 쓰는 페이지였다.
이러한 경우 iconv을 쓰면 간단히 해결 가능하였다.
$ npm install iconv
혹시나 본인이 경험했던 iconv 모듈 설치 시 에러가 뜨는 경우가 있을 것이다.
아래를 보자.
node-gyp 관련 문제이다.
자세히 알아보기 위해 문서를 보자.
npm 사이트에서 node-gyp 문서의 Installation을 확인해보자.
본인은 CentOS에 설치하므로 On Unix를 보겠다. (MAC, Window도 있으니 환경에 맞게 살펴보아라.)
Python, make, GCC가 필수인 것을 확인할 수 있다.
자세히 보니 파이썬 버전이 v2.7 이상이다.
본인은 2.6이었기에 문제가 발생했다.
설치가 안되어있다면 아래와 같이 npm으로 설치가 가능하다.
$ npm install --python=python2.7
$ npm config set python python2.7파이썬 버전을 업데이트 하는 법 또한 보자.
먼저 모든 응용 프로그램을 업그레이드 할 것이다.
단지 의존성과 보안을 위해서이다. -y 옵션을 설정하면 설치 시 y/n 묻는 거에 yes를 자동으로 설정된다.
$ yum -y update
그 다음 Delevoper Tools을 설치할 것이다.
파이썬을 설치하기 위한 의존성 관리 툴이다.
$ yum groupinstall "Development tools"
$ yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
이제 파이썬을 설치해보자.
$ cd /opt
$ wget --no-check-certificate https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
$ tar xf Python-2.7.6.tar.xz
$ cd Python-2.7.6
$ ./configure --prefix=/usr/local
make && sudo make altinstall
altintall 사용 이유는 현재 본인의 시스템에는 두 버전의 파이썬이 존재하기 때문에 디폴트 설정이 필요하기 때문이다.
설치가 되었으니 이제 버전을 확인 해보자.
$ /usr/local/bin/python2.7 --version
Python 2.7.6
업그레이드 된 버전이 설치되었다.
그 후 파이썬 경로 설정해줘야한다.
본인은 gcc 버전 문제도 있었다.
혹시나 gcc 버전 문제가 발생하면 아래 링크를 참조하길바란다.
깨지는 결과없이 출력되는 것을 볼 수 있다.
아래 링크들을 참고하길 바란다.
iconv 모듈
https://www.npmjs.com/package/iconv
node-gyp 모듈
https://www.npmjs.com/package/node-gyp
euc-kr
https://ko.wikipedia.org/wiki/EUC-KR
파이썬 디폴트 설정
https://linuxconfig.org/how-to-change-from-default-to-alternative-python-version-on-debian-linux
gcc 업그레이드
반응형'Nodejs' 카테고리의 다른 글
라우팅 모듈화를 통한 MVC 패턴 ::마이구미 (0) 2017.01.21 [nodejs] redis session 저장소 관리 :: 마이구미 (0) 2017.01.08 pm2를 활용한 클러스터링 :: 마이구미 (0) 2016.07.26 죽지 않고 유지하는 pm2 사용법 :: 마이구미 (0) 2016.07.02 nodejs를 이용해 데이터베이스에 삽입하기(객체배열) (0) 2016.06.12