How to save string to a file as UTF-8

Below code:

s1 = “good”

File.new(“test.xml”, “w+”) << s1

It always give a file ANSI encoded. How can I get it UTF-8 encoded?

Thanks.

Bali Bali wrote:

If your ruby version < “1.9”
$KCODE = “UTF8”
else
#!/usr/bin/env ruby

encoding: utf-8 <— this line

end

(NOTES : above code is not legal ruby code)

pierr wrote:

Bali Bali wrote:

If your ruby version < “1.9”
$KCODE = “UTF8”
else
#!/usr/bin/env ruby

encoding: utf-8 <— this line

end

(NOTES : above code is not legal ruby code)

pierr, Thanks! But looks like it is not working for me.

Code v2.0

$KCODE = “UTF-8”

s1 = “good”

File.new(“test.xml”, “w+”) << s1

It still creates a ANSI file. My Ruby version:
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

It is windows release which should not be related to the issue.

Any idea?

You can try

require 'iconv'
myEncoding = 'iso-8859-15' # or 'CP1252' or what you have
s1 = 

‘ü’ s1 = Iconv.new(‘utf-8’, myEncoding ).iconv(s1)

Maybe, you will need the “Byte-order mark”. That are 3 special Bytes
at the very beginning of your utf8-file:
wikipedia.org > utf-8 > “Byte-order mark”

Bali Bali wrote:

Below code:

s1 = “good”

File.new(“test.xml”, “w+”) << s1

It always give a file ANSI encoded. How can I get it UTF-8 encoded?

What do you mean by “ANSI encoded”? Do you mean “ASCII”?

The text “good” is exactly the same in both ASCII and UTF-8, so how do
you know it is one and not the other? Can you give a different example
which shows the problem?

Use “hexdump -C test.xml” to show the exact content of the file, byte by
byte.