[Zope] Unicode ZPT and XML woes
Stuart Bishop
stuart.b at commonground.com.au
Thu Nov 13 22:40:29 EST 2003
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 14/11/2003, at 8:27 AM, Jim Kutter wrote:
> Doh.
>
> FWIW, I bypassed the problem by removing 'goofy' characters (accented
> 'e' in this case) from the item/head field, but that doesn't guarantee
> the problem won't come back in the future.
>
> Is there any way I can enforce a certain charset in my forms, so the
> non-supported characters don't enter the system in the first place? And
> is there a way to see what character set a given string is in?
Simple solution is to set the Content-Type header to your preferred
character
set, and then get Zope to convert the 8bit encoded results from your
form
to Unicode using its casting facility:
<tal:x
condition="python:request.RESPONSE.setHeader('Content-Type','utf8')" />
<form action="foo" accept-charset="utf8">
<input name="bar:ustring:utf8"
value="Zope converts this to a Unicode string" />
<input type="submit" />
</form>
Alternatively, if you want to avoid the possibility of people messing
with
your forms or submitting data in non standard ways (typing a query
string into a URL for example), you need to decode the strings in your
form handler:
def handleFoo(self, bar, REQUEST=None):
''' docstring '''
if type(bar) != type(u''):
bar = bar.decode('utf8') # Needs to match the content type of your
form
[ ... ]
Some insight into this issue can be found at
http://lists.oasis-open.org/archives/wsrp-markup/200208/msg00012.html
I recommend sticking with UTF8 as your encoding in case somebody enters
Japanese into your forms.
- --
Stuart Bishop <stuart at stuartbishop.net> ☞ http://www.stuartbishop.net/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (Darwin)
iD8DBQE/tE60AfqZj7rGN0oRAuDXAJ9hEW+XVTvZkd2QmeiHP968hzsm/ACgjr4E
N2xBPqnXYGtvcs1iYgNvQh0=
=9B+5
-----END PGP SIGNATURE-----
More information about the Zope
mailing list