Nicolas Gaiffe <nicolas.gaiffe@gmail.com> writes:
> Hi,
>
> I am facing an issue with special characters handling inside a Ruby
> script running on Windows and am sure some of you could help me on
> this.
>
> This script copies files such as "<English_name>.txt" to
> "<Other_language_name>.txt". But once translated, the new filename may
> have special characters. 'ä' for instance.
>
> Running
> puts 'ä'
> in a Ruby script gives
> 'õ'
> as an output, whereas the same code in irb gives
> 'ä'
>
> There must be an encoding issue at some point in my script but I
> didn't manage to fix it (tried different values of '#encoding:'
> without success). Any clue ?
I use emacs. In emacs, you'd just put:
#!/usr/bin/ruby
# -*- coding:utf-8 -*-
puts "ä"
to have the script encoded in utf-8 and therefore outputing an utf-8 byte stream.
Then of course, you have to have an utf-8 terminal:
[pjb@simias :0.0 tmp]$ chmod 755 test.rb
[pjb@simias :0.0 tmp]$ export LC_CTYPE=en_US.UTF-8
[pjb@simias :0.0 tmp]$ ./test.rb
ä
[pjb@simias :0.0 tmp]$ cat test.rb
#!/usr/bin/ruby
# -*- coding:utf-8 -*-
puts "ä"
[pjb@simias :0.0 tmp]$
Notice that in irb, with an utf-8 terminal, "ä".length == 2
Of course, you can choose to use iso-8859-1 or iso-8859-15, just substitute utf-8.
--
__Pascal Bourguignon__