[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]
On Wed, 30 May 2007 14:03:58 +0100 Simon Waters <simon@xxxxxxxxxxxxxx> wrote: > After much pondering I set the locale manually for the current user > (export LANG=en_GB.UTF-8"), and relevant things have changed. Same as my default locale. > vi test.pl > #!/usr/bin/perl > use strict; > use warnings; > use utf8; > > binmode(STDOUT,":utf8"); Why set that? > > print "£\n"; $ cat /tmp/simon.pl #!/usr/bin/perl -w binmode(STDOUT,":utf8"); my $sign = "£"; print "$sign\n"; $ perl simon.pl £ Yuk - so remove the binmode: $ cat /tmp/simon.pl #!/usr/bin/perl -w my $sign = "£"; print "$sign\n"; $ perl simon.pl £ Lovely. > In "vim" that looks like a £ sign ('cat' and 'less' want to use the > hexagonal ? symbol). cat and less both indicate '£' on this system. Makes me wonder if you haven't actually got a pure UTF8 environment. > My first question is what is going wrong here? Is this the wrong way to > do Unicode string literal (pressing shift + "3"). I'm not so concerned > with the "right way" or a "working way", but I wanted to understand what > is going wrong (perl/vim/my brain(likely)/Debian). Maybe perl isn't picking up the exported values - if you default locale is not UTF8, perl will not start in UTF8. Try: $ LANG=en_GB.UTF-8 perl ./test.pl (Although I cannot reproduce your errors by specifying non-UTF8 values for LANG.) > With Perl 5.8 (on Debian Sarge) I understood that "use utf8" should > still be used to allow Unicode literals to be used. I don't need to use it in a true UTF8 environment. I changed some time ago due to problems with gnucash. > We don't actually have Unicode literals in the Perl code, but it is > going to have to handle them, and I was writing a new test case for one > of the Perl template toolkit filters, and I couldn't get it to run at > all because it needed some UTF-8 character (so it could be taught not > mangle them as badly as it does currently -- I suspect the real mangling > is done in Javascript). If you have a snippet I can test on this system. I don't think it is the fault of perl at this stage if it affects cat and less (which should display £ perfectly). € also works. $ cat simon.pl #!/usr/bin/perl -w my $sign = "€"; print "$sign\n"; $ perl simon.pl € (on holiday but still browsing from time to time.) Bizarrely, my email client complains about € symbols so I'm not too sure how this will show up in your email client or in the list archive. Here goes.... -- Neil Williams ============= http://www.data-freedom.org/ http://www.nosoftwarepatents.com/ http://www.linux.codehelp.co.uk/
Attachment:
pgpqT5PcHzv0C.pgp
Description: PGP signature
-- The Mailing List for the Devon & Cornwall LUG http://mailman.dclug.org.uk/listinfo/list FAQ: http://www.dcglug.org.uk/linux_adm/list-faq.html