[Web-SIG] Request for Comments on upcoming WSGI Changes

Henry Precheur henry at precheur.org
Tue Sep 22 01:09:52 CEST 2009


On Mon, Sep 21, 2009 at 03:26:35PM -0700, Robert Brewer wrote:
> It looks simpler until you have a site that is not primarily utf-8. In
> that case, you multiply your (1 line * number of middlewares in the WSGI
> stack * each request).
> With wsgi.uri_encoding you get either (1 line * 1
> middleware designed to transcode * each request), or even 0 if your
> whole site uses just one charset.

I am not sure I understand your point.

The 0 lines hold true if the whole site is using latin-1 or utf-8 and
you write your applications/middlewares only for this site. But if it's
using any other encoding you still have to transcode.

def middleware(start_response, environ):
    value = environ['some_key'].\
        encode('utf8', 'surrogateescape').\
        decode(SITE_ENCODING)
    ...

With wsgi.uri_encoding you would still have to do the following:

def middleware(start_response, environ):
    value = environ['some_key'].\
        encode(environ['some_key.encoding']).\
        decode(SITE_ENCODING)
    ...

Of course you can directly use `environ['some_key']` if you know you'll
get the 'right' encoding all the time. But when the encoding changes,
you'll have to fix all your middlewares.


I am missing something?

-- 
  Henry Prêcheur


More information about the Web-SIG mailing list