rubyで日本語の文字数を取得する Stringクラスのsizeやlengthメソッドはbyte数を返すため、 日本語が含まれるStringオブジェクトに対して実行すると、 文字数と違う値が返ります。 例えば下記の場合、日本語が1文字に付き3byteで格納されているのがわかります。 print "あいうえおabcかきくけこ".size => 33 そのため、下記のようなコードは文字化けを起こす可能性があります。 # 先頭から5bye分取り出すが、"あい"は6byteで格納されているので文字化けする。 print "あいうえおabcかきくけこ"[0, 5].to_s => あ? byte数ではなく、文字数としてカウントしたい場合はsplitを使い Arrayに変換します。 下記の場合、日本語10文字と英字が3文字で13文字が取得できます。 print "あいうえおabcかきくけこ".spl