ランダムにUTF-8の文字列を生成しようとしてつまったので適当な解決策 codes = (0x00 ... 0x1ffff).to_a chars = [] (rand(10) + 10).times do chars << codes[rand(codes.length)] end chars.pack('U*') これで10文字から20文字のUTF-8の文字列がランダムに生成できる。制御文字とかもばんばん入ってくるのでテストデータとしては有効に作用し、僕のコードのバグが露見する。作らなければよかった。