[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

`cmd` and UTF-8

Antonio Mat

8/18/2006 6:35:00 PM

I have spent several hours searching for this and I still don't know how
it works.

How is `cmd` string encoded? I want it in UTF-8, but I don't know how to
do it!
I have tried with $KCODE = 'u' but it doesn't works.
My Ruby version is 1.8.2

--
Posted via http://www.ruby-....

5 Answers

Paul Battley

8/18/2006 6:44:00 PM

0

On 18/08/06, Antonio Mat <atd@ruidodebarrio.org> wrote:
> I have spent several hours searching for this and I still don't know how
> it works.
>
> How is `cmd` string encoded? I want it in UTF-8, but I don't know how to
> do it!
> I have tried with $KCODE = 'u' but it doesn't works.
> My Ruby version is 1.8.2

Do you mean the return value? That depends on your platform, locale,
and, possibly, the program itself. If you know the encoding, you can
use Iconv to convert it to UTF-8:

require 'iconv'
s = `some cmd` # returns a string in iso-8859-1, for example
iconv = Iconv.new("utf-8", "iso-8859-1")
iconv.iconv(s) # => string in UTF-8

Perhaps you could post a sample of code to show what you are trying to
do. It's easier to solve a concrete problem than to read minds.

Paul.

Antonio Mat

8/18/2006 7:04:00 PM

0

Paul Battley wrote:
> On 18/08/06, Antonio Mat <atd@ruidodebarrio.org> wrote:
>> I have spent several hours searching for this and I still don't know how
>> it works.
>>
>> How is `cmd` string encoded? I want it in UTF-8, but I don't know how to
>> do it!
>> I have tried with $KCODE = 'u' but it doesn't works.
>> My Ruby version is 1.8.2
>
> Do you mean the return value? That depends on your platform, locale,
> and, possibly, the program itself. If you know the encoding, you can
> use Iconv to convert it to UTF-8:
>
> require 'iconv'
> s = `some cmd` # returns a string in iso-8859-1, for example
> iconv = Iconv.new("utf-8", "iso-8859-1")
> iconv.iconv(s) # => string in UTF-8
>
> Perhaps you could post a sample of code to show what you are trying to
> do. It's easier to solve a concrete problem than to read minds.

Yes, I mean the return value.

I can't use Iconv because the script should work with any locale.
This is the code:

require 'rexml/document'

[...]

include REXML

@atom = Document.new
entry = Element.new 'entry'
entry.attributes['xmlns'] = 'http://www.w3.org/2005...
@atom.elements << entry
@atom << XMLDecl.new

e = Element.new 'title'
e << Text.new(`dcop amarok player title`)
entry << e

XML tag text should be in UTF-8.

Thank you.



--
Posted via http://www.ruby-....

David Vallner

8/18/2006 9:47:00 PM

0

> Yes, I mean the return value.
>
> I can't use Iconv because the script should work with any locale.

Until Ruby gets some non-basic Unicode support, I -think- you're stuck
to iconv-ing. I don't think that even $KCODE='u' will detect user input
locale and convert automatically, but only changes the behaviour of
string manipulation code. I could be completely wrong though.

You should be able to detect the current locale using the standard
library, I haven't really done this though. Welcome to the world of text
encoding, may whoever invented codepages burn in hell forever for that.

David Vallner

Nobuyoshi Nakada

8/19/2006 2:15:00 AM

0

Hi,

At Sat, 19 Aug 2006 04:04:03 +0900,
Antonio Mat wrote in [ruby-talk:209287]:
> I can't use Iconv because the script should work with any locale.

Then what encoding does your target program use?

If it is affected by environment locale, it may use utf-8 by
setting ENV["LC_ALL"] etc.

--
Nobu Nakada

Antonio Mat

8/20/2006 11:16:00 PM

0

Antonio Mat wrote:
> I have spent several hours searching for this and I still don't know how
> it works.
>
> How is `cmd` string encoded? I want it in UTF-8, but I don't know how to
> do it!
> I have tried with $KCODE = 'u' but it doesn't works.
> My Ruby version is 1.8.2

Here is a solution:

ENV["LC_ALL"] = "C.UTF-8"
utf8_string = `cmd`

Thank you all!

--
Posted via http://www.ruby-....