* Marius Kjeldahl [2008-05-05 00:20]:
Everything seems to work fine
?Seems? being the operative word.
with one small exception. Whenever I have a HTML form input
type=text with an international character and the form
validation fails, so the default value of the input field
contains the international character, the rest of the html
document does no longer display international characters
That is because all of that was not marked as character data to
begin with. When Perl tries to concatenate it with a Unicode
string, it sees byte strings so it decodes them as Latin-1. Then
all the UTF-8 multibyte characters turn into gremlins.
I'm guessing the browser detects that the document contains
some element that is not proper utf8, and disables utf8
altogether before displaying whenever the input field contains
an international characters.
You?re probably wrong about that guess. What headers do you send?

Do you use `<meta http-equiv="Content-Type">`? (Bad idea, btw.)
If I remove the international character from the input field
and resubmit, everything is displayed correctly again. [?] The
input field value is set in the template from the
$c->req->parameters passed in the stash.
Are you using Catalyst::Plugin::Unicode?
So my question is what's the best way to handle this?
Did you tell Template Toolkit or whatever template engine you use
that the templates are in UTF-8?
Can an input value in a form handle a utf8 encoded string at
all Yes.
and if so how can I convince it my string is utf8, and if I do
does the browser detect it automagically?
No, the headers must be set correctly.
Any pointers?
In addition to the above? Check out encoding::warnings.

Aristotle Pagaltzis // <http://plasmasturm.org/>

Search Discussions

Discussion Posts


Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 2 of 8 | next ›
Discussion Overview
groupcatalyst @
categoriescatalyst, perl
postedMay 4, '08 at 11:09p
activeMay 6, '08 at 5:43p



site design / logo © 2021 Grokbase