Rails 3 ActiveResource не избягва уникод в xml при изпращане на заявка

Наскоро преминахме към rails 3.2.13. Използваме ActiveResource за извикване на уеб услуга. ActiveResoure ще генерира xml полезния товар. Забелязахме, че новият xml не избягва уникод символа. Например:

  <name> C:\Documents and Settings\All Users\testütestdev1.txt </name>

В rails 2.3 той ще избяга от ü до ü :

  <name> C:\Documents and Settings\All Users\test&#252;testdev1.txt <name>

След известно разследване. Изглежда, че се дължи на метода ActiveSuppport to_xml, който не избягва символа на unicode. Някой имал ли е този проблем и знае ли как да го реши?


person DrChanimal    schedule 09.04.2013    source източник


Отговори (1)


Можете да използвате Rack::Utils за това

> Rack::Utils.escape("  <name> C:\Documents and Settings\All Users\testütestdev1.txt </name>")
#=> "++%3Cname%3E+C%3ADocuments+and+SettingsAll+Users%09est%C3%BCtestdev1.txt+%3C%2Fname%3E"

> Rack::Utils.unescape(_)
#=> "  <name> C:Documents and SettingsAll Users\testütestdev1.txt </name>"
person shime    schedule 09.04.2013
comment
Но проблемът е, че не можем да направим бягството сами, защото използваме active_resource, за да направим извикване на уеб услуга, което ще генерира xml. - person DrChanimal; 10.04.2013