Ваш рубин находится в режиме UTF-8, но "\223"
не является допустимой строкой UTF-8.Когда вы находитесь в UTF-8, любой байт с установленным восьмым битом означает, что вы находитесь в многобайтовом символе, и вам нужно продолжать читать больше байтов, чтобы получить полный символ;это означает, что "\223"
- это просто часть символа в кодировке UTF-8, следовательно, ваша ошибка.
0223 и 0224 (десятичные числа 147 и 148) являются "умными" кавычками в набор символов Windows-1252 , но Windows-1252 не является UTF-8.В UTF-8 вы хотите "\u201c"
и "\u201d"
для кавычек:
>> puts "\u201c"
“
>> puts "\u201d"
”
Так что, если вы пытаетесь удалить кавычки, то вам, вероятно, нужен один из них:
str.gsub("\u201c", "").gsub("\u201d", "")
str.gsub(/[\u201c\u201d]/, '')