Johann Klähn | 25 Mar 03:21 2010
Picon

Accept ASCII_8BIT in String.check

I was having problems with encoded emails. Using archlinux / ruby
1.9.1_p378 Iconv.iconv returns the encoding ASCII_8BIT,
which was rejected by String.check.

Before I was getting debug messages like this when converting mails or
building the index:
 couldn't transcode text from ISO-8859-1 (ISO-8859-1) to utf8) (...)
(got unexpected encoding ASCII-8BIT (String::CheckError))
My String.check now contains:
  if respond_to?(:encoding) && !(encoding == Encoding::UTF_8 ||
encoding == Encoding::ASCII || encoding == Encoding::ASCII_8BIT)
And everything is working as expected. Instead of text.ascii the real
umlauts are displayed.

Hope that helps,
Johann
Rich Lane | 25 Mar 04:20 2010
Picon

Re: Accept ASCII_8BIT in String.check

Excerpts from Johann Klähn's message of 2010-03-24 22:21:32 -0400:
> I was having problems with encoded emails. Using archlinux / ruby
> 1.9.1_p378 Iconv.iconv returns the encoding ASCII_8BIT,
> which was rejected by String.check.
> 
> Before I was getting debug messages like this when converting mails or
> building the index:
>  couldn't transcode text from ISO-8859-1 (ISO-8859-1) to utf8) (...)
> (got unexpected encoding ASCII-8BIT (String::CheckError))
> My String.check now contains:
>   if respond_to?(:encoding) && !(encoding == Encoding::UTF_8 ||
> encoding == Encoding::ASCII || encoding == Encoding::ASCII_8BIT)
> And everything is working as expected. Instead of text.ascii the real
> umlauts are displayed.
> 
> Hope that helps,
> Johann

An ASCII_8BIT string means there's a bug in sup. Please add an assertion
so that the program exits when the encoding is ASCII_8BIT and post the
backtrace. Also, what sup version is this?
_______________________________________________
Sup-devel mailing list
Sup-devel <at> rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
Johann Klähn | 25 Mar 09:02 2010
Picon

Re: Accept ASCII_8BIT in String.check

Ah, now it's perfectly clean to me, I guess I just shouldn't do any debugging
when I'm too tired.
The problem is that the call to Iconv.iconv(target, ..., ...) in
Iconv.easy_decode
expects target to be typed as "UTF-8", and my environment has
$encoding = "utf8".
Iconv can't handle this and thus returns ASCII_8BIT (does no real conversion).
(I'm using sup 0.11 with ruby 1.9.1_p378.)

Gmane