rubyのNKFで「澤」が文字化け

NKFで入力文字コードが未指定だと文字化けする例。(eucsjisの変換)

#!/usr/bin/ruby
require 'nkf'

# 文字コードの設定
$KCODE = "u"

s = NKF.nkf('-s',"長澤")
se = NKF.nkf('-sE',"長澤")

puts("-s:")
puts(NKF.nkf('-eS',s))
puts("")
puts("-sE:")
puts(NKF.nkf('-eS',se))

s = NKF.nkf('-s',"長澤")は文字化けしますが、
se = NKF.nkf('-sE',"長澤")だと文字化けしません。
NKFのオプションは基本的に、「-s」と出力コードのみを指定してやるとOKなのだが、まれに「-sE」と出力入力コードを指定してやらないと文字化けするものがあります。上記「澤」など。
NKFを使う際は、入力コードも必ず指定するようにしましょう。
にほんブログ村 IT技術ブログへ
1票ポチッと押して下さい♪このブログのランキングが少し上がります。