.. which tells me, that this the internal Perl representation of the string in UTF-8 encoding. What I am doing wrong!
Its unclear what you think is gong on
See perlunitut: Unicode in Perl
The default encoding is something like latin-1, its not utf-8, so you start with some latin-1 string, encode it as latin 1 (nothing changes), then you use length, and you're confused :)
See this , only once you "decode" do you have actual perl "unicode string" , until then its "binary" (latin1)
#!/usr/bin/perl -- use strict; use warnings; use Devel::Peek; use Data::Dump; use Encode; our $f = "K\366ln"; sub ff { dd($f); Dump($f); } ff ; $f = encode('iso-8859-1', $f); # bytes encoded as latin1 ff ; $f = encode('UTF-8', $f); # bytes encoded as utf8 ff ; $f = decode('UTF-8', $f); # unicode string ff ; __END__ "K\xF6ln" SV = PVNV(0xb18114) at 0x99b8f4 REFCNT = 1 FLAGS = (POK,pIOK,pNOK,pPOK) IV = 0 NV = 0 PV = 0xada504 "K\366ln"\0 CUR = 4 LEN = 12 "K\xF6ln" SV = PVNV(0xb18114) at 0x99b8f4 REFCNT = 1 FLAGS = (POK,pIOK,pNOK,pPOK) IV = 0 NV = 0 PV = 0xb2f424 "K\366ln"\0 CUR = 4 LEN = 12 "K\xC3\xB6ln" SV = PVNV(0xb18114) at 0x99b8f4 REFCNT = 1 FLAGS = (POK,pIOK,pNOK,pPOK) IV = 0 NV = 0 PV = 0xb2f3dc "K\303\266ln"\0 CUR = 5 LEN = 12 "K\xF6ln" SV = PVMG(0xacf3cc) at 0x99b8f4 REFCNT = 1 FLAGS = (SMG,POK,pIOK,pNOK,pPOK,UTF8) IV = 0 NV = 0 PV = 0xb26374 "K\303\266ln"\0 [UTF8 "K\x{f6}ln"] CUR = 5 LEN = 12 MAGIC = 0xae478c MG_VIRTUAL = &PL_vtbl_utf8 MG_TYPE = PERL_MAGIC_utf8(w) MG_LEN = 4
In reply to Re: possible missunderstanding of package Encode
by Anonymous Monk
in thread possible missunderstanding of package Encode
by toohoo
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |