Mailing List Archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [tlug] Japanese in Perl on Linux



Blomberg David <dblomber@example.com> writes:

> I am using perl to send an email it works except that Japanese text come
> out as question marks.
> 
> could any perl monger out there let me in on how I am doing this wrong?
> ------first version----------------------------------
> print MAIL "$BIT@example.com%Q%9%o!<%I>pJs(B";
> 
> (first version output is just question marks)
> ------Second version----------------------------------
> $temp = MIME::Base64::encode("$BIT@example.com%Q%9%o!<%I>pJs(B");
> chomp($temp);
> print MAIL "=?ISO-2022-JP?B?$temp?=\n";
> 
> (this one I get the string
> =?ISO-2022-JP?B?Pz8/Pz8/Pz8/?=
> mime encoded Japanese text as best I can tell)
> -----------------------------------------------------

I'm assuming you'd like to B encode this text for a mail header.  In
which case, the following works for me (note that the file encoding is
UTF-8):

$temp = MIME::Base64::encode("$BIT@example.com%Q%9%o!<%I>pJs(B");
chomp($temp);
print "=?UTF-8?B?$temp?=\n";

It outputs:

=?UTF-8?B?5LiN5q2j44OR44K544Ov44O844OJ5oOF5aCx?=

I tested this in the Subject of an email with gnus mail reader and it
displays correctly.  I'm using Perl 5.6.1 (which may behave differently
than Perl 5.8).

I can get this working with ISO-2022-JP as long as I store the data in a
separate file (ISO-2022-JP encoded) and read it in to B encode it.
Here's what I get in that case.

=?ISO-2022-JP?B?GyRCSVRANSVRJTklbyE8JUk+cEpzGyhCCg==?=

If you want to put the text in the body of the email, then you don't
need to encode it as long as you set the Content-Type to match the
encoding of the text.

Content-Type: text/plain; charset=ISO-2022-JP

This would work as long as your data is in ISO-2022-JP.  Since
ISO-2022-JP is 7 bit, you don't need to set Content-Transfer-Encoding
(it defaults to 7bit).  But if you're using UTF-8 for example, then it
would have to be set to 8bit.

You can use iconv to convert between encodings.  To convert a file from
EUC-JP to ISO-2022-JP:

iconv -f euc-jp -t iso-2022-jp <filename>

Hope this helps.

Marjan

Home | Main Index | Thread Index

Home Page Mailing List Linux and Japan TLUG Members Links