可以從字節數組使用#pack方法構造字符串。這樣,您可以輕鬆生成無效/錯誤的字符串,並在測試中使用它。
例子:
describe "#normalize" do
it "should remove/ignore invalid characters" do
# this "string" equals "Mandados de busca do caso Megaupload considerados inv\xE1lidos - Tecnologia - Sol"
bad_string = [77, 97, 110, 100, 97, 100, 111, 115, 32, 100, 101, 32, 98, 117, 115, 99, 97, 32, 100, 111, 32, 99, 97, 115, 111, 32, 77, 101, 103, 97, 117, 112, 108, 111, 97, 100, 32, 99, 111, 110, 115, 105, 100, 101, 114, 97, 100, 111, 115, 32, 105, 110, 118, 225, 108, 105, 100, 111, 115, 32, 45, 32, 84, 101, 99, 110, 111, 108, 111, 103, 105, 97, 32, 45, 32, 83, 111, 108].pack('c*').force_encoding('UTF-8')
normalize(bad_string).should == 'Mandados de busca do caso Megaupload considerados invlidos - Tecnologia - Sol'
end
end
(我在相當長的測試字符串對不起,我只是找不到在我的代碼更短的例子)
也許,看看這個:HTTP:/ /robots.thoughtbot.com/post/42664369166/fight-back-utf-8-invalid-byte-sequences – Hock 2013-02-21 04:50:24