SOAP Problem with Non-ASCII Characters

Hi,

I use Ruby to access a .Net Webservice which returns german umlauts (äöü...). I create the service like this:

service = SOAP::RPC::Driver.new(server, InterfaceNS)
service.default_encodingstyle = SOAP::EncodingStyle::ASPDotNetHandler::Namespace

If there are umlauts in the result, I get the following error:

c:/ruby/lib/ruby/1.8/xsd/datatypes.rb:198:in `screen_data': {http://www.w3.org/2
001/XMLSchema}string: cannot accept 'Ärzteblatt'. (XSD::ValueSpaceError)
        from c:/ruby/lib/ruby/1.8/xsd/datatypes.rb:140:in `set'
        from c:/ruby/lib/ruby/1.8/soap/encodingstyle/soapHandler.rb:473:in `deco
de_textbuf'
        from c:/ruby/lib/ruby/1.8/soap/encodingstyle/soapHandler.rb:210:in `deco
de_tag_end'
        from c:/ruby/lib/ruby/1.8/soap/parser.rb:191:in `decode_tag_end'
        from c:/ruby/lib/ruby/1.8/soap/parser.rb:152:in `end_element'
        from c:/ruby/lib/ruby/1.8/xsd/xmlparser/parser.rb:75:in `end_element'
        from c:/ruby/lib/ruby/1.8/xsd/xmlparser/xmlparser.rb:36:in `do_parse'
        from c:/ruby/lib/ruby/1.8/xsd/xmlparser/xmlparser.rb:31:in `parse'
         ... 6 levels...
        from c:/ruby/lib/ruby/1.8/soap/rpc/driver.rb:275:in `call'
        from c:/ruby/lib/ruby/1.8/soap/rpc/driver.rb:302:in `search'
        from c:/ruby/lib/ruby/1.8/soap/rpc/driver.rb:297:in `search'
        from C:/Sandbox/test_NewsSearch.rb:25

Could somebody tell me how to fix this problem?

regards,
Achim

Hi,

Achim Domma (SyynX Solutions GmbH) wrote:

I use Ruby to access a .Net Webservice which returns german umlauts
(äöü...). I create the service like this:

service = SOAP::RPC::Driver.new(server, InterfaceNS)
service.default_encodingstyle =
SOAP::EncodingStyle::ASPDotNetHandler::Namespace

If there are umlauts in the result, I get the following error:

If your server allows UTF-8, whichever of these should work.

(1) pass -Ku argument to ruby interpreter such as 'ruby -Ku myclient.rb'
(2) add $KCODE = 'UTF8' at the top of the script.
(3) set XSD::Charset.encoding = 'UTF8'

Regards,
// NaHi