happymapper icon indicating copy to clipboard operation
happymapper copied to clipboard

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

Open deiga opened this issue 11 years ago • 10 comments
trafficstars

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

deiga avatar Sep 05 '14 04:09 deiga

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.

burtlo avatar Nov 18 '14 22:11 burtlo

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

deiga avatar Nov 19 '14 07:11 deiga

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.

Danicela avatar Jul 02 '15 09:07 Danicela

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?

burtlo avatar Jul 02 '15 14:07 burtlo

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 avatar Jul 02 '15 14:07 Danicela

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 avatar Jul 06 '15 08:07 Danicela

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)

Danicela avatar Nov 03 '15 15:11 Danicela

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

mvz avatar Dec 31 '17 13:12 mvz

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

deiga avatar Jan 03 '18 08:01 deiga

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

mvz avatar Jan 03 '18 10:01 mvz