Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Help getting around iconv on a PC

Reply
Thread Tools

Help getting around iconv on a PC

 
 
Anders
Guest
Posts: n/a
 
      12-01-2005
I've just started using Ruby again, and maybe it's because it's been
awhile since I've used it, but I've gotten stuck. I want to use the
bloglines Webservice API. So, I downloaded and installed it as well as
simple-xml, which it uses. I run a simple test:

require 'webservice/bloglines'
print "done!\n"

Ruby chokes, saying:

:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:5:in
`require__': No such file to load -- iconv (LoadError)
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:5:in
`require'
from c:/ruby/lib/ruby/site_ruby/1.8/webservice/parser.rb:4
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:5:in
`require__'
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:5:in
`require'
from c:/ruby/lib/ruby/site_ruby/1.8/webservice/restapi.rb:7
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:5:in
`require__'
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:5:in
`require'
from c:/ruby/lib/ruby/site_ruby/1.8/webservice/bloglines.rb:3
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:5:in
`require__'
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:5:in
`require'
from test.rbw:1

As far as I can tell from looking around the web, iconv is a Unix
library, and I'm on a PC running WinXP. How do I work around this? To
figure out what the parser is using iconv for, I've included the code
below. Any help would be greatly appreciated.

Thanks,
Anders Schneiderman
SEIU International
-------------------------------------------------------------------------------------

# $Id: parser.rb,v 1.2 2004/09/29 04:19:10 date Exp $

require 'xmlsimple'
require 'iconv'

# handling invalid character
# Replace from invalid character to `?'
# (instead of numerical character reference).
# Because REXML convert numerical character reference at parsing time.
class Iconv
def self.fix_malformed_characters(str)
iconv = Iconv.new("UTF-8", "UTF-8")
out = ""
begin
out << iconv.iconv(str)
rescue Iconv::IllegalSequence => e
out << e.success
ch, str = e.failed.split(//n, 2)
out << if respond_to?(:unknown_unicode_handler)
unknown_unicode_handler(ch)
else
"?"
end
retry
end
return out
end
end

module WebService

class Parser
def initialize
end

# for REXML
def fix_encoding(xml_source)
xml_source.sub(/encoding="utf-8"\?>/i, 'encoding="UTF-8"?>')
end

def parse(xml_source)
xml_source = fix_encoding(xml_source)
xml_source = Iconv.fix_malformed_characters(xml_source)
XmlSimple.xml_in(xml_source,
{ 'ForceArray' => false, 'KeepRoot' => true }
)
end
end

end

 
Reply With Quote
 
 
 
 
Dave Burt
Guest
Posts: n/a
 
      12-01-2005
Anders wrote:
> ... I want to use the
> bloglines Webservice API. So, I downloaded and installed it as well as
> simple-xml, which it uses. I run a simple test:
>
> require 'webservice/bloglines'
> print "done!\n"
>
> Ruby chokes, saying:
>
> :/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:5:in
> `require__': No such file to load -- iconv (LoadError)
> ...


I've put together a package to install iconv on a One-Click Ruby box here:
http://dave.burt.id.au/ruby/iconv.zip

Cheers,
Dave


 
Reply With Quote
 
 
 
 
Dan Smorey Jr.
Guest
Posts: n/a
 
      12-01-2005
Hi Anders, I haven't used iconv on windows with Ruby, but I found this
googling...

http://groups.google.com/group/comp....d/58df01a5bd0=
ab5b8/330841516d29bc54?lnk=3Dst&q=3Druby+iconv+windows+i nstall&rnum=3D6&hl=
=3Den#330841516d29bc54

On 12/1/05, Anders <(E-Mail Removed)> wrote:
> I've just started using Ruby again, and maybe it's because it's been
> awhile since I've used it, but I've gotten stuck. I want to use the
> bloglines Webservice API. So, I downloaded and installed it as well as
> simple-xml, which it uses. I run a simple test:
>
> require 'webservice/bloglines'
> print "done!\n"
>
> Ruby chokes, saying:
>
> :/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:5:in
> `require__': No such file to load -- iconv (LoadError)
> from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:=

5:in
> `require'
> from c:/ruby/lib/ruby/site_ruby/1.8/webservice/parser.rb:4
> from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:=

5:in
> `require__'
> from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:=

5:in
> `require'
> from c:/ruby/lib/ruby/site_ruby/1.8/webservice/restapi.rb:7
> from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:=

5:in
> `require__'
> from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:=

5:in
> `require'
> from c:/ruby/lib/ruby/site_ruby/1.8/webservice/bloglines.rb:3
> from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:=

5:in
> `require__'
> from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:=

5:in
> `require'
> from test.rbw:1
>
> As far as I can tell from looking around the web, iconv is a Unix
> library, and I'm on a PC running WinXP. How do I work around this? To
> figure out what the parser is using iconv for, I've included the code
> below. Any help would be greatly appreciated.
>
> Thanks,
> Anders Schneiderman
> SEIU International
> -------------------------------------------------------------------------=

------------
>
> # $Id: parser.rb,v 1.2 2004/09/29 04:19:10 date Exp $
>
> require 'xmlsimple'
> require 'iconv'
>
> # handling invalid character
> # Replace from invalid character to `?'
> # (instead of numerical character reference).
> # Because REXML convert numerical character reference at parsing t=

ime.
> class Iconv
> def self.fix_malformed_characters(str)
> iconv =3D Iconv.new("UTF-8", "UTF-8")
> out =3D ""
> begin
> out << iconv.iconv(str)
> rescue Iconv::IllegalSequence =3D> e
> out << e.success
> ch, str =3D e.failed.split(//n, 2)
> out << if respond_to?(:unknown_unicode_handler)
> unknown_unicode_=

handler(ch)
> else
> "?"
> end
> retry
> end
> return out
> end
> end
>
> module WebService
>
> class Parser
> def initialize
> end
>
> # for REXML
> def fix_encoding(xml_source)
> xml_source.sub(/encoding=3D"utf-8"\?>/i, 'encodi=

ng=3D"UTF-8"?>')
> end
>
> def parse(xml_source)
> xml_source =3D fix_encoding(xml_source)
> xml_source =3D Iconv.fix_malformed_characters(xml=

_source)
> XmlSimple.xml_in(xml_source,
> { 'ForceArray' =3D> false, 'KeepRoot' =3D=
> true }
> )
> end
> end
>
> end
>
>
>



 
Reply With Quote
 
Anders Schneiderman
Guest
Posts: n/a
 
      12-01-2005
Thanks, Dave! That did the trick.

Anders

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
iconv "\n" (Iconv::InvalidCharacter) Krzysztof Cierpisz Ruby 0 09-08-2009 12:11 PM
Help with Iconv needed Marcus Strube Ruby 1 11-30-2007 12:00 AM
Iconv hangs while converting chinese UTF-8 to ascii, please help. Mister Yu Ruby 2 09-30-2007 10:32 AM
Iconv.iconv and Windows XP Tim Ferrell Ruby 4 10-04-2005 10:20 AM
Read all of this to understand how it works. then check around on otherRead all of this to understand how it works. then check around on other thelisa martin Computer Support 2 08-18-2005 06:40 AM



Advertisments