ruby-dev 패키지가 설치돼 있지 않다면, gem install 중 아래와 같은 에러가 발생한다.
# gem install iconv
Building native extensions. This could take a while...
ERROR: Error installing iconv:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.9.1 extconf.rb
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from extconf.rb:1:in `<main>'
Gem files will remain installed in /var/lib/gems/1.9.1/gems/iconv-1.0.3 for inspection.
UTF-8을 EUC-KR로 변환하고, 다시 UTF-8로 변환하는 방식으로 테스트했다. (당연히)변환은 문제 없이 잘된다. 그런데 스크립트를 실행하자 다음과 같은 경고메시지를 출력했다.
$ ./iconv.rb
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead.
안녕
iconv 대신에 String.encode를 사용하란 말씀이다. ruby는 1.9.x 버전부터 사용와서 잘 모르는데, 아마도 1.9.x가 되면서 String 클래스에서 문자셋 변환 메서드를 기본으로 포함하는 것 같다.
String.encode를 사용하도록 코드를 수정했다.
iconv
iconv gem 설치
# gem install iconv Building native extensions. This could take a while... ERROR: Error installing iconv: ERROR: Failed to build gem native extension. /usr/bin/ruby1.9.1 extconf.rb /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError) from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from extconf.rb:1:in `<main>' Gem files will remain installed in /var/lib/gems/1.9.1/gems/iconv-1.0.3 for inspection.iconv 사용
Iconv.iconv("dst_encoding", "src_encoding", string)Iconv.iconv("UTF-8", "EUC-KR", mystring)string.encode 의 사용
# -*- coding: utf-8 -* require 'iconv' conv1 = Iconv.new('EUC-KR', 'UTF-8') conv2 = Iconv.new('UTF-8', 'EUC-KR') str = conv1.iconv("안녕") puts conv2.iconv(str)# -*- coding: utf-8 -* str= "안녕".encode('EUC-KR', 'UTF-8') puts str.encode('UTF-8', 'EUC-KR')히스토리
Recent Posts
Archive Posts
Tags