`cmd` and UTF-8

A

Antonio Mat

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
 
P

Paul Battley

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.
 
A

Antonio Mat

Paul said:
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'
@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.
 
D

David Vallner

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
 
N

nobu

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.
 
A

Antonio Mat

Antonio said:
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!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,565
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top