僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
つぃったーの発言の二ヶ所が、また化けていた。
片方はどうやら、現在の環境では表示できない文字らしい()。
もう片方は、普通に表示できるはずの文字列だった。
あれこれ試行錯誤して、化ける場合と化けない場合とを
同じスクリプトに入れた。
どう違うのか、あまりよくわからない。
#!/usr/bin/env ruby require "rexml/document" require "nkf" nkf_add="--numchar-input" doc = REXML::Document.new( '<?xml version="1.0" encoding="UTF-8"?> <status> <text1>舐める飴</text1> <text2>舐められ</text2> </status>') e = doc.elements.each("/") { |i| print 'This String can display normally: ' puts NKF.nkf(nkf_add, i.elements["status/text1"].text) print 'This String cannot display normally: ' puts NKF.nkf(nkf_add, i.elements["status/text2"].text) }
$ ruby mojibake.rb This String can display normally: 舐める飴 This String cannot display normally: 闊舌a繧峨l
nkf のせいじゃないらしい。rexmlを通さなければ化けなかったから。
#!/usr/bin/env ruby require 'nkf' nkf_add="--numchar-input" test1='<text1>舐める飴</text1>' test2='<text2>舐められ</text2>' puts NKF.nkf(nkf_add, test1) puts NKF.nkf(nkf_add, test2)
$ ruby test.rb <text1>舐める飴</text1> <text2>舐められ</text2>
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。