ruby 1.8.7 почему .to_yaml преобразует некоторые строки в нечитаемые байты - PullRequest
4 голосов
/ 28 сентября 2011

Разбор некоторых веб-страниц с помощью nokogiri, у меня возникли проблемы при очистке некоторых строк и сохранении их с помощью YAML. Чтобы воспроизвести проблему, посмотрите на этот сеанс IRB, который воспроизводит ту же проблему:

irb(main):001:0> require 'yaml'
=> true
irb(main):002:0> "1,000 €".to_yaml
=> "--- !binary |\nMSwwMDAg4oKs\n\n"
irb(main):003:0> "1,0000 €".to_yaml
=> "--- \"1,0000 \\xE2\\x82\\xAC\"\n"
irb(main):004:0> "1,00 €".to_yaml
=> "--- !binary |\nMSwwMCDigqw=\n\n"
irb(main):005:0> "1 €".to_yaml
=> "--- !binary |\nMSDigqw=\n\n"
irb(main):006:0> "23 €".to_yaml
=> "--- !binary |\nMjMg4oKs\n\n"
irb(main):007:0> "12000 €".to_yaml
=> "--- !binary |\nMTIwMDAg4oKs\n\n"
irb(main):008:0> "1200000 €".to_yaml
=> "--- \"1200000 \\xE2\\x82\\xAC\"\n"
irb(main):009:0> "120000 €".to_yaml
=> "--- \"120000 \\xE2\\x82\\xAC\"\n"
irb(main):010:0> "12000 €".to_yaml
=> "--- !binary |\nMTIwMDAg4oKs\n\n"

Подводя итог, иногда выходные данные .to_yaml читаются, в то время как другие выходные данные не читаются. Наиболее интригующим аспектом является то, что строки очень похожи.

Как мне избежать этих! Бинарных ... выходов?

1 Ответ

1 голос
/ 29 сентября 2011

Предпочитает ли YAML выводить строку в виде текста или двоичного кода, зависит от отношения символов ASCII и не ASCII.

Если вы хотите максимально избежать !binary, вам следует использовать я2ямл драгоценный камень.Он изо всех сил пытается сбросить строки, поскольку ASCII + избежал UTF-8.

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