Unicode strings in ruby code

Hi everyone,

I’m trying to get ruby to run a script that has a hebrew string.
I’m using a string with just one letter - aleph, the first in the
hebrew alphabet.

This code:

a = “א”

that I write using SciTE and saved as UTF-8 gives these errors:
C:/Documents and Settings/idan/Desktop/test.rb:1: Invalid char \357' in expression C:/Documents and Settings/idan/Desktop/test.rb:1: Invalid char\273’
in expression
C:/Documents and Settings/idan/Desktop/test.rb:1: Invalid char `\277’
in expression

Now, if I save this as ANSI in SciTE it allows it, and then it runs.
However, if I use eclipse ruby plugin, it won’t allow me to save aleph
as ANSI (rightfully).

Also, if I read aleph from a file everything works fine when the ruby
script is UTF-8.

What is wrong here?
Can ruby just not get strings in the code that aren’t ANSI?

Thanks,
Idan M…

Idan M. wrote:

Hi everyone,

I’m trying to get ruby to run a script that has a hebrew string.
I’m using a string with just one letter - aleph, the first in the
hebrew alphabet.

This code:

a = “א”

that I write using SciTE and saved as UTF-8 gives these errors:
C:/Documents and Settings/idan/Desktop/test.rb:1: Invalid char \357' in expression C:/Documents and Settings/idan/Desktop/test.rb:1: Invalid char\273’
in expression
C:/Documents and Settings/idan/Desktop/test.rb:1: Invalid char `\277’
in expression

Now, if I save this as ANSI in SciTE it allows it, and then it runs.
However, if I use eclipse ruby plugin, it won’t allow me to save aleph
as ANSI (rightfully).

Also, if I read aleph from a file everything works fine when the ruby
script is UTF-8.

What is wrong here?
Can ruby just not get strings in the code that aren’t ANSI?

Thanks,
Idan M…

You can always do this:

a = “\xD7\x90”
puts a

If what you are trying to do is avoid having to type in utf chars in
hexidecimal notation, then try putting this at the top of your file:

$KCODE = “UTF-8”

and see if that allows you to enter the actual character with your
editor.

Hi,

I am trying to avoid the hexidecimal notation since it is obviously
hard to do and not readable…
The KCODE statement doesn’t help.

Idan.

It must be a windows issue…
Which ruby do you run?
I’m running 1.8.6

Hm. It works for me:

celtic@sohma:~$ file hebrew.rb
hebrew.rb: UTF-8 Unicode text
celtic@sohma:~$ cat hebrew.rb
a = “א”
puts a

celtic@sohma:~$ ruby hebrew.rb
א
celtic@sohma:~$ ruby -v
ruby 1.8.6 (2007-06-07 patchlevel 36) [i486-linux]
celtic@sohma:~$

So I can’t recreate your problem - I wonder if it’s the Windows
distribution.

Arlen

feels stupid
I see you’re running 1.8.6 as well
How can I move this issue forward?

Idan M. wrote:

in expression

Now, if I save this as ANSI in SciTE it allows it, and then it runs.

The problem is partly because you’re using SCITE. It’s saves the “Byte
Order Mark” or BOM at the beginning of UTF-8 files. Ruby fails to run
scripts with a BOM at the beginning.

The solution is to find a setting to save UTF8 without BOM. I don’t know
how it’s done in SCITE, but any decent code editor should be able to do
this. If, not find another.

As others have said, you should puts $KCODE=‘u’ or run ruby with -Ku if
your script is encoded in UTF8.

alex

When I run with -KU I’m expected to have a certian method missing in
Japanese:

Desktop/test.rb:1: undefined local variable or method `’ for
main:Object (NameError)

Hi,

On Wed, 27 Feb 2008 06:00:22 -0800 (PST)
Idan M. [email protected] wrote:

Hi,

I am trying to avoid the hexidecimal notation since it is obviously
hard to do and not readable…
The KCODE statement doesn’t help.

-Ku option would.

Justin C. wrote:

Idan M. wrote:

Desktop/test.rb:1: undefined local variable or method `’ for
main:Object (NameError)
I think you might still be having issues with how your editor is saving
the file. Try creating a fresh test file with something like Notepad and
see if you have the same problems.

If you start the utf-8 encoded file with BOM with the following line…

=nil

…, Ruby 1.8 will have no problems.

Wolfgang Nádasi-Donner

Idan M. wrote:

When I run with -KU I’m expected to have a certian method missing in
Japanese:

Desktop/test.rb:1: undefined local variable or method `’ for
main:Object (NameError)

I think you might still be having issues with how your editor is saving
the file. Try creating a fresh test file with something like Notepad and
see if you have the same problems.

-Justin

What does this line do?

It works with a fresh notepad as well.

On 29 פברואר, 23:25, Wolfgang Nádasi-Donner [email protected]