`The rubyist'【えぬ】の日記

 | 

2011-06-03

Ruby 1.9の違うエンコード形式同士のStringを結合させてみるとエラーになる Ruby 1.9の違うエンコード形式同士のStringを結合させてみるとエラーになる - `The rubyist'【えぬ】の日記 を含むブックマーク はてなブックマーク - Ruby 1.9の違うエンコード形式同士のStringを結合させてみるとエラーになる - `The rubyist'【えぬ】の日記

まあ考えてみたら当たり前のことなんだけど。

PerlEncodeに慣れてからRuby 1.9に来ると、Perlの内部エンコードおよびdecode()に該当するのがなくてちょっと混乱するよね、と。

でも、Stringは自分達のエンコード形式を知っているんだから、結合のときによきにはからってくれてもいいじゃんとか思ってしまうw

UTF-8に揃えろってことですね、わかります。

(enctest)
#!/usr/bin/ruby1.9.1
# coding: utf-8
require './enctest-euc.rb'
UTF = "UTF"

begin
  puts UTF + EUC
rescue => e
  puts e
end
puts UTF + EUC.encode("utf-8")

(enctest-euc.rb)
# -*- coding: euc-jp -*-
EUC = "EUC"

(実行結果)
% ./enctest
incompatible character encodings: UTF-8 and EUC-JP
UTFEUC
 |