お題
EUC-JPの文字列と、Shift-JISの文字列を連結してUTF-8の文字列を返すメソッドを定義せよ。
回答
str_euc = "マッスル".encode("EUC-JP") str_sjis = "北村".encode("Shift_JIS") def to_utf8(str_euc, str_sjis) str_euc.encode("UTF-8") + str_sjis.encode("UTF-8") end p to_utf8(str_euc, str_sjis)
説明
まず、文字列を用意してencodeメソッドにそれぞれエンコーディングを設定する。ここでは、「EUC-JPというエンコーディングのマッスル」という文字列と、「Shift_JISというエンコーディングの北村」という文字列を作っている。
str_euc = "マッスル".encode("EUC-JP") str_sjis = "北村".encode("Shift_JIS") # エンコーディングが変換されていることを確認 p str_euc.encoding p str_sjis.encoding => #<Encoding:EUC-JP> #<Encoding:Shift_JIS>
to_utf8メソッド内では、引数をencodeメソッドでUTF-8に変換し、+で連結して返している。
str_euc = "マッスル".encode("EUC-JP") str_sjis = "北村".encode("Shift_JIS") def to_utf8(str_euc, str_sjis) str_euc.encode("UTF-8") + str_sjis.encode("UTF-8") end p to_utf8(str_euc, str_sjis) => "マッスル北村"
Rubyでは戻り値を返すときにreturnはしなくていい。最後に評価された式が常に戻り値になる。