Re: Silence “Wide character” warning globally one time

[email protected] (karl williamson) Sun, 01 Aug 2010 16:49:12 -0600
Newsgroups perl.unicode
Message-ID <[email protected]>
Dan Muey wrote:
> Thank you Michael, I'll have a look at Juerd's page as it's the only thing I haven't yet :)
> 
> On Jul 29, 2010, at 6:17 PM, Michael Ludwig wrote:
> 
>> Hi Dan,
>>
>> [Silence “Wide character†warning globally one time]
>> Dan Muey schrieb am 29.07.2010 um 16:59 (-0500):
>>> I've a situation where a large code base will be outputting "byte
>>> strings" and "unicode strings" from a number of sources.
>> All lumped together? This will likely mean encoding issues.
>>
>>> I essentially need to do 
>>>     no warnings "utf8";
>> That's hiding the problem.
>>
>>> [ -- Problem: Unicode string gives warning -- ]
>> Sorry, but no, the warning is not the problem: it's an indication to
>> the user making him aware of the actual problem, which is printing wide
>> characters to a single-byte (narrow) output handle.
>>
>>>    perl -le 'print "Think before you codeâ„¢ (bytes string)";print "Hello \x{201C}World\x{201D} (Unicode String)";'
>>  perl -CO -le 'print "Hello \x{201C}World\x{201D}";'
>>
>> See: perldoc perlrun
>>
>> You need the equivalent of -CO in your script:
>>
>>  binmode STDOUT, ':utf8';
>>
>>>    perl -le 'binmode STDOUT, "utf8";print "Think before you codeâ„¢ (bytes string)";print "Hello \x{201C}World\x{201D} (Unicode String)";'
>> You're mungling bytes and Unicode characters together. The result is, of
>> course, wrong. Pick either bytes or Unicode as your standard encoding.
>> Convert input accordingly.
>>
>>> Is there any super voo doo that can be done?
>> The best voodoo is understanding Perl's Unicode handling by reading
>> Juerd's pages [1], which have also been included in the docs of current
>> Perl versions; so read those as well; but don't read the old docs, they
>> do contain some documentation bugs.

I have been working on the Perl pods for Unicode, and there have been 
significant changes for 5.12 and 5.12.1, and even more on the current 
developer's  blead.

If there are still inaccuracies, I would like to know about them.

>>
>> You might also want to read the archives of this list to see how I
>> managed to make some progress in understanding thanks to the good
>> answers I got here.
>>
>> [1] http://juerd.nl/perl
>> -- 
>> Michael Ludwig
> 
>