1
Я использую Ruby, и пытается использовать Nokogiri для XMLNokogiri XML синтаксический анализ и win1251
У меня есть ответ такого сервера
<?xml version="1.0" encoding="windows-1251"?><response><Purpose>\xD0\x9B\xD0\x98\xD0\xA7\xD0\x9D\xD0\xAB\xD0\x95</Purpose><retval>0</retval></response>
и Nokogiri :: XML не может разобрать его
В рельсах консоли:
a = "<?xml version=\"1.0\" encoding=\"windows-1251\"?><response><Purpose>\xD0\x9B\xD0\x98\xD0\xA7\xD0\x9D\xD0\xAB\xD0\x95</Purpose><retval>0</retval></response>"
#=> "<?xml version=\"1.0\" encoding=\"windows-1251\"?><response><Purpose>ЛИЧНЫЕ</Purpose><retval>0</retval></response>"
doc = Nokogiri::XML(a)
#=> #<Nokogiri::XML::Document:0x6181fc2 name="document">
doc.errors
#=> [#<Nokogiri::XML::SyntaxError: input conversion failed due to input error, bytes 0x98 0xD0 0xA7 0xD0>, #<Nokogiri::XML::SyntaxError: switching encoding: encoder error>, #<Nokogiri::XML::SyntaxError: Blank needed here>, #<Nokogiri::XML::SyntaxError: input conversion failed due to input error, bytes 0x98 0xD0 0xA7 0xD0>, #<Nokogiri::XML::SyntaxError: encoder error>, #<Nokogiri::XML::SyntaxError: parsing XML declaration: '?>' expected>, #<Nokogiri::XML::SyntaxError: internal error: Huge input lookup>, #<Nokogiri::XML::SyntaxError: internal error: Huge input lookup>, #<Nokogiri::XML::SyntaxError: internal error: Huge input lookup>, #<Nokogiri::XML::SyntaxError: Start tag expected, '<' not found>]
, кажется, это проблема с \ xD0 \ x98
как я могу решить эту проблему?
Можете ли вы попробовать «Nokogiri :: XML (a, nil,« windows-1251 »)'? –
да я могу, но в этом случае я потеряю полное значение –
Konstantin
Разве это не верно для последовательности UTF-8 'ЛИЧНЫЕ'? Документ XML сообщает вам неправильную кодировку. –