Boris Zentner wrote:
No, I think the stored strings are correct currently. The example use latin1 chars that by luck are bellow 256 in utf8. In other words we can not convert them back. A conversion back and forth is not possible every-time.
But how APR::Table is supposed to know whether it should restore the UTF8 flag or not, if it has no place to store it?
How about this solution:
use Devel::Peek;
use Encode;
@str = ("Hi " . chr(0x2663), "there");
for my $str (@str) {
print "perl original string:\n";
Dump($str);
Encode::_utf8_off($str); # simulate set/get to apr::Table
print "perl string returned from APR::Table:\n";
Dump($str);
print "fixed perl string:\n";
$str = decode("utf8", $str);
Dump($str);
print "\n------------\n";
}Here I've added: $str = decode("utf8", $str); to your original example. As you can see, both ascii and real unicode are handled correctly.
/tmp> perl utf8.pl
perl original string:
SV = PV(0x804cef8) at 0x804cc20
REFCNT = 2
FLAGS = (POK,pPOK,UTF8)
PV = 0x805f450 "Hi \342\231\243"\0 [UTF8 "Hi \x{2663}"]
CUR = 6
LEN = 7
perl string returned from APR::Table:
SV = PVMG(0x80cee20) at 0x804cc20
REFCNT = 2
FLAGS = (SMG,POK,pPOK)
IV = 0
NV = 0
PV = 0x805f450 "Hi \342\231\243"\0
CUR = 6
LEN = 7
MAGIC = 0x80fe258
MG_VIRTUAL = &PL_vtbl_utf8
MG_TYPE = PERL_MAGIC_utf8(w)
MG_LEN = 4
fixed perl string:
SV = PVMG(0x80cee20) at 0x804cc20
REFCNT = 2
FLAGS = (SMG,POK,pPOK,UTF8)
IV = 0
NV = 0
PV = 0x80feeb0 "Hi \342\231\243"\0 [UTF8 "Hi \x{2663}"]
CUR = 6
LEN = 7
MAGIC = 0x80fe258
MG_VIRTUAL = &PL_vtbl_utf8
MG_TYPE = PERL_MAGIC_utf8(w)
MG_LEN = 4------------ perl original string: SV = PV(0x804cf4c) at 0x804cd04 REFCNT = 2 FLAGS = (POK,pPOK) PV = 0x805db78 "there"\0 CUR = 5 LEN = 6 perl string returned from APR::Table: SV = PV(0x804cf4c) at 0x804cd04 REFCNT = 2 FLAGS = (POK,pPOK) PV = 0x805db78 "there"\0 CUR = 5 LEN = 6 fixed perl string: SV = PV(0x804cf4c) at 0x804cd04 REFCNT = 2 FLAGS = (POK,pPOK,UTF8) PV = 0x80fef08 "there"\0 [UTF8 "there"] CUR = 5 LEN = 6
------------
-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
