Just do IT

思うは招く

文字列を異なるエンコーディングに変えて連結して返す Ruby基礎#26

お題

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はしなくていい。最後に評価された式が常に戻り値になる。

学び