buf = "".b TCPSocket.open("koukoku.shadan.open.ad.jp", 23) do |sock| while c = sock.getc buf += c x = buf.dup.force_encoding(senc) if x.valid_encoding? print x.encode(denc) buf = "".b end end end
view.rb:12:in `encode': "\x87a" from Shift_JIS to UTF-8 (Encoding::UndefinedConversionError) from view.rb:12:in `block in <main>' from view.rb:7:in `open' from view.rb:7:in `<main>'
@zundan Shift_JISの0x8761 = JIS X 208の13区34点はいわゆる「機種依存文字」のエリアで、RubyはShift_JISを厳密にJIS X 208のことと解釈するので変換できないっぽいですね。 "\x87a".force_encoding("CP932").encode("UTF-8") とすると正しく㌢に変換できます。