# Utf-8 encoding foreign charectors

**URL:** <https://www.ruby-forum.com/t/utf-8-encoding-foreign-charectors/122030>\
**Category:** Rails\
**Created:** [December 3, 2007, 11:54pm UTC](https://www.ruby-forum.com/t/utf-8-encoding-foreign-charectors/122030 "2007-12-03T23:54:47Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![oweism](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/898d66/32.png) [@oweism](https://www.ruby-forum.com/u/oweism)\
**Post date:** [December 3, 2007, 11:54pm UTC](https://www.ruby-forum.com/t/utf-8-encoding-foreign-charectors/122030/1 "2007-12-03T23:54:47Z")

</div>

hi,  
i am trying to build and application that accepts different languages  
and characters. There is two yaml files: english and frensh. i first  
load the content of the French file as a hash array the dump it back  
using the following command  
File.open(french.yaml, “w”) {|f| YAML.dump(join\_hash, f)}  
Everything is working fine; however ruby encodes a string with foreign  
characters when it converts back to yaml.  
e.g  
“franÃ§ais”.to\_yaml =\> becomes “fran\xC3\xA7ais”

is there any way i can go around this; i have already wasted two days  
researching.  
Your help well be greatly appreciated  
regards  
MO

---

<div class="post-metadata">

**Author:** ![oweism](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/898d66/32.png) [@oweism](https://www.ruby-forum.com/u/oweism)\
**Post date:** [December 4, 2007, 5:19am UTC](https://www.ruby-forum.com/t/utf-8-encoding-foreign-charectors/122030/2 "2007-12-04T05:19:48Z")

</div>

Mouhannad Oweism wrote:

> hi,  
> i am trying to build and application that accepts different languages  
> and characters. There is two yaml files: english and frensh. i first  
> load the content of the French file as a hash array the dump it back  
> using the following command  
> File.open(french.yaml, “w”) {|f| YAML.dump(join\_hash, f)}  
> Everything is working fine; however ruby encodes a string with foreign  
> characters when it converts back to yaml.  
> e.g  
> “franÃ§ais”.to\_yaml =\> becomes “fran\xC3\xA7ais”

Well, \xC3\xA7 is the code point for the UTF8 representation of Ã§, so it  
seems to be working at some level.

Ruby does not natively support UTF8. I believe that to enable UTF8  
support in Rails you need to add this to your environment.rb file:

# Set these for unicode support

$KCODE = ‘u’  
require ‘jcode’

However, I cannot say whether or not this will help you in your specific  
instance. In ruby script/console running in a DOS box on my Windows XP  
your string above renders as “franaceais”

---

<div class="post-metadata">

**Author:** ![oweism](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/898d66/32.png) [@oweism](https://www.ruby-forum.com/u/oweism)\
**Post date:** [December 4, 2007, 5:52am UTC](https://www.ruby-forum.com/t/utf-8-encoding-foreign-charectors/122030/3 "2007-12-04T05:52:37Z")

</div>

James B. wrote:  
Take a look at iconv.  
[http://wiki.rubyonrails.com/rails/pages/iconv](http://wiki.rubyonrails.com/rails/pages/iconv)

---

<div class="post-metadata">

**Author:** ![oweism](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/898d66/32.png) [@oweism](https://www.ruby-forum.com/u/oweism)\
**Post date:** [December 5, 2007, 2:50pm UTC](https://www.ruby-forum.com/t/utf-8-encoding-foreign-charectors/122030/4 "2007-12-05T14:50:43Z")

</div>

Mouhannad Oweism wrote:

> However what I am interested in is
> 
> conv = “français”.to\_yaml
> 
> puts Iconv.new(‘UTF-8’, ‘UTF-8’).iconv(conv).inspect =\> NOTHING HAPPENS
> 
> Any suggestions?

This is a bug in Ruby’s YAML parser

---

<div class="post-metadata">

**Author:** ![oweism](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/898d66/32.png) [@oweism](https://www.ruby-forum.com/u/oweism)\
**Post date:** [December 4, 2007, 6:24pm UTC](https://www.ruby-forum.com/t/utf-8-encoding-foreign-charectors/122030/5 "2007-12-04T18:24:38Z")

</div>

James B. wrote:

> James B. wrote:  
> Take a look at iconv.  
> [http://wiki.rubyonrails.com/rails/pages/iconv](http://wiki.rubyonrails.com/rails/pages/iconv)

Thanks for the link James. This way can help in translating this:

puts Iconv.new(‘UTF-8’, ‘UTF-8’).iconv(“fran\xC3\xA7ais”).inspect =\>  
franÃ§ais

However what I am interested in is

conv = “franÃ§ais”.to\_yaml

puts Iconv.new(‘UTF-8’, ‘UTF-8’).iconv(conv).inspect =\> NOTHING HAPPENS

Any suggestions?

MO
