On May 28, 1:11pm, ciapecki <ciape... / gmail.com> wrote:
> I have a small script oci1.rb:
>
> require 'oci8'
> conn = OCI8.new("test","test","test_db")
> File.open("out.txt","wb") do |out|
>  tabs = conn.exec('SELECT * from test_utf8') do |r|
>   out.write(r.join(','))
>   out.write("\n")
>  end
> end
> conn.logoff
>
> that runs perfectly on windows producing from my test_db:
> polish,
> russsian,ӧѧӧ
> german,
>
> when I run exactly the same on my linux box:
> polish,loszc
> russsian,????????
> german,aou
>
> I tested then a small script that reads and writes UTF8 on linux
> (read_write_utf8.rb):
> File.open("utf8_out.txt","wb") do |out|
>  File.open("utf8.txt","r").each do |line|
>   out.write(line)
>  end
> end
>
> and that works good!
>
> chris@emeadb:~/work/ruby/oci$ ruby read_write_utf8.rb
>
> chris@emeadb:~/work/ruby/oci$ cat utf8.txt
> polish,
> russsian,ӧѧӧ
> german,
>
> chris@emeadb:~/work/ruby/oci$ cat utf8_out.txt
> polish,
> russsian,ӧѧӧ
> german,
>
> where should I try to dig into to find out how to force the oracle
> database data to be properly stored in the file on linux?
> I just add that
> LANG=en_US.UTF-8
>
> thanks,
> chris

apparently setting NLS_LANG=AMERICAN_AMERICA.UTF8 (externally! - not
in the ruby script) did the trick.

chris