ruby из любой кодировки в ascii - PullRequest
5 голосов
/ 23 февраля 2011

Мне приходится иметь дело в основном с английскими алфавитами и всеми знаками препинания, мне не нужно беспокоиться о европейских акцентах. Поэтому единственное, что меня беспокоит, - это когда пользователь вставляет что-то, что он копирует из Интернета, например, с апострофом, который, когда я делаю пут в консоли (на Win7), выводит

"ItΓÇÖs" # где на самом деле "It"

Итак, мой главный вопрос: есть ли в Ruby метод конвертации, который я могу использовать в Ruby, который просто правильно заменяет все,.;?! "'~` _- счетными частями ASCII?

Я очень мало понимаю о кодировках, если вы считаете, что это неправильный вопрос, который, вероятно, может иметь место, пожалуйста, посоветуйте, что мне следует искать вместо этого.

Спасибо

Ответы [ 3 ]

6 голосов
/ 23 февраля 2011

Я работаю в издательском деле, где мы много занимаемся этим. Мы добились успеха с stringex https://github.com/rsl/stringex. У них есть метод to_ascii, который нормализует штрихи Юникода и т. Д.

1 голос
/ 10 июня 2013

А в ruby ​​2.0:

"ItΓÇÖs".encode("ASCII", invalid: :replace, undef: :replace, replace: '')
 => "Its" 
1 голос
/ 23 февраля 2011

Для программной обработки многобайтовых кодировок iconv - ваш друг. И Джеймс Грей написал серию статей в блоге , рассказывающих о том, как разобрать проблему и преобразовать кодировки.

Проблема усложняется при работе с вставленным текстом, поскольку некоторые символы могут быть в одной многобайтовой кодировке, а другие символы - в другом. Возможно, вам придется пройти проверку строки на наличие многобайтовых символов, затем спросить Ruby, что такое кодировка, и, если это не то, что вы ожидаете, преобразовать ее в ожидаемую или желаемую кодировку, а затем перейти к следующему символу. Статьи Грея хорошо освещают все это и хорошо читаются.

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