Ошибка .gsub с нерегулярным символом 194 - PullRequest
0 голосов
/ 25 октября 2010

Я видел это несколько раз, но ни одно из решений пока не работает для меня ...

Я пытаюсь удалить ложный символ из строки ...

, например

"myÂstring here Â$100"

.. но это должно быть my string here $100

Я пробовал:

string.gsub(/\194/,'')
string.gsub(194.chr,'')
string.delete 194.chr

Все это до сих пор остается нетронутым ..

Есть мысли?

Ответы [ 3 ]

1 голос
/ 25 октября 2010

По умолчанию Rails поддерживает UTF-8.

Вы можете использовать свой любимый редактор, чтобы написать gsub вызов, используя соответствующий символ, который вы хотите заменить, как в:

"myÂstring here Â$100".gsub(/Â/,"")

Если это не работает, возможно, у вас ошибка кодирования где-то в вашем стеке, возможно, в вашем HTML-документе. Попробуйте запустить rails console, как-то извлечь эту строку (если она получена из модели, попробуйте выполнить find для содержащего класса) и запустить gsub. Это не решит вашу проблему, но вы поймете, в чем именно проблема.

1 голос
/ 25 октября 2010

Похоже, проблема кодировки символов для меня.Для каждой кодовой точки Unicode в диапазоне U+0080..U+00BF включительно кодировка UTF-8 представляет собой двухбайтовую последовательность, 0xC2 (194 десятичное число) и числовое значение кодовой точки.Например, неразрывный пробел - U+00A0 - становится 0xC2 0xA0.Был ли там еще один дополнительный персонаж, которого вы уже удалили?

В любом случае, gsub(/\194/,'') неверно.\nnn предполагается восьмеричный побег, но число в десятичной форме.194 в восьмеричном - это \302.

0 голосов
/ 25 октября 2010
"myÂstring here Â$100".gsub("Â","") # "mystring here $100"

Это то, что вы имели в виду?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...