mvz / happymapper

Object to XML mapping library, using Nokogiri (Fork from John Nunemaker's Happymapper)
http://github.com/mvz/happymapper/
MIT License
152 stars 44 forks source link

Is there a way to specify which encoding to use when mapping? #53

Open deiga opened 10 years ago

deiga commented 10 years ago

I get messed up unicode characters when parsing, ie. Liiketoimintayksikkö => Liiketoimintayksikk\303\266

burtlo commented 10 years ago

That's not something I ever considered. It would be a great addition to the library. If it is an option that can get to Nokogiri, it's an option this library could support.

deiga commented 10 years ago

Nokogiri supports giving an encoding to it http://www.nokogiri.org/tutorials/parsing_an_html_xml_document.html

Danicela commented 9 years ago

Hi,

When I make a node.to_xml, the XML produced is not in UTF-8, then french accents are corrupted. (assuming node is an instance of a class 'Node include HappyMapper')

I tried various things but the happymapper to_xml seems to be different from nokogiri to_xml and doesn't accept arguments which set encoding.

How do I select the encoding for happymapper marshalling (objects -> xml) ?

Thank you.

burtlo commented 9 years ago

Here are the current set of options you pass to to_xml. I think that this could easily be updated to provide support to send off parameters to Nokogiri.

@Danicela how do you think you would want to add the Nokogiri options to that method?

Danicela commented 9 years ago

I'm not sure to understand how to do it, I'm beginner in Ruby.

It would be something like node.to_xml(:builder => new builder(encode("UTF8"))) ?

Danicela commented 9 years ago

I tried :

nokogiriBuilder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') file.write(node.to_xml(nokogiriBuilder, nil, nil))

But it writes "#Nokogiri::XML::Builder:0x3cce640".

Then I came back to : file.write(node.to_xml)

And I modified happymapper.rb at line 505 : builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') instead of : builder = Nokogiri::XML::Builder.new

And then it worked.

Now... I have to find a way to make the same thing without modifying happymapper.rb.

Danicela commented 9 years ago

I got help on this subject, here is the line that doesn't need any change in the gem code :

file.write(node.to_xml(Nokogiri::XML::Builder.new(encoding: 'UTF-8'), nil, nil).to_xml)

mvz commented 6 years ago

@deiga what encoding did the original XML in your example have?

deiga commented 6 years ago

@mvz unfortuantely I have no idea after 3 years of opening this issue :)

mvz commented 6 years ago

@deiga that was to be expected :-). Thanks for responding, anyway.