
dba at richyen
Aug 29, 2007, 8:20 AM
Post #3 of 4
(3594 views)
Permalink
|
|
Re: saving decoded unicode value to Session causes error
[In reply to]
|
|
On Aug 29, 2007, at 12:28 AM, Tsirkin Evgeny wrote: > It looks like that SDBM_File file handler or something else in it's > internals does not > know that you are storing (writing) utf8 records into it. > I don't know how to force it to know this :( maybe some SDBM_File > expert here > will know. Hmm, I thought that perhaps it was something with Apache::ASP, and that SDBM_File would be a dependency that was being passed bad data? > However the workaround for this is to NOT mark the string you get > as utf8 i.e. > don't do Encode::decode_utf8. Just set your pages/server to send to > the browser > header saying that you need utf8 as request charset and you will be > fine. > > <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> > will do this or > $Response->AddHeader() I suppose I misunderstood the purpose of this <meta> tag...so not only output, but inputs get encoded as UTF-8 here? Cool stuff.... When, then, would I need to use decode_utf8? I suppose it's for file- reading or command-line input then? > What this solution does NOT do - it does not validate the input to > be legal utf8. True. Will keep that in mind. > But most of the time you will be fine. > Hope this helps. > Evgeny Thanks! --Richard > > > On 8/29/07, Richard Yen <dba[at]richyen.com> wrote: Hi, > > Wondering if anyone has ever encountered this issue. > > Trying to internationalize my site, so at every input, I pass it > through Encode::decode_utf8. > > However, when I attempt to put the values into Session, I get the > following message: > > Errors Output > > Wide character in subroutine entry at /usr/local/perl/lib/site_perl/ > > 5.8.7/MLDBM/Sync/SDBM_File.pm line 80, <GEN10> line 21. , /usr/ > > local/perl/lib/site_perl/5.8.7/Apache/ASP.pm line 1521 > > Debug Output > > Use of uninitialized value in string ne at ../global/lib/ > > lib_filesystem.pm line 41. > > Using an array as a reference is deprecated at ../global/lib/ > > lib_peer_review.pm line 389, line 21. > > Wide character in subroutine entry at /usr/local/perl/lib/site_perl/ > > 5.8.7/MLDBM/Sync/SDBM_File.pm line 80, line 21. , /usr/local/perl/ > > lib/site_perl/5.8.7/Apache/ASP.pm line 1521 > > An example is if I use the capital Omega character (option-z on mac > keyboard), this error occurs when attempting to store into Session: > > > my $secret_answer = Encode::decode_utf8($main::Request->Form > > ('secret_answer')); > > $main::Session->{secret_answer} = $secret_answer; > > I've discovered that if I put the decoded value into a hash, and then > put the hash into Session, it behaves normally. Also, if I don't > decode at all, it behaves normally also. > > Would anyone know why this happens, or how to fix it? > > Thanks! > --Richard > > --------------------------------------------------------------------- > To unsubscribe, e-mail: asp-unsubscribe[at]perl.apache.org > For additional commands, e-mail: asp-help[at]perl.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: asp-unsubscribe[at]perl.apache.org For additional commands, e-mail: asp-help[at]perl.apache.org
|