mod_python icon indicating copy to clipboard operation
mod_python copied to clipboard

parse_qsl problems

Open mihaiush opened this issue 3 years ago • 1 comments

Hi, It seems there is something wrong with parse_qsl function from .src/_apachemodule.c For this code:

from mod_python import apache
from mod_python import util

def index(req):
    apache.log_error('args: {}'.format(req.args))
    apache.log_error('parse_qsl: {}'.format(util.parse_qsl(req.args)))
    req.content_type = "text/plain"
    return "pong\n"

I get:

[Wed Jun 08 11:09:01.207959 2022] [:error] [pid 18:tid 140612959446784] args: x=10&y=20
[Wed Jun 08 11:09:01.207974 2022] [:error] [pid 18:tid 140612959446784] parse_qsl: [('10', '10'), ('20', '20')]

instead of:

parse_qsl: [('x', '10'), ('y', '20')]

mihaiush avatar Jun 08 '22 11:06 mihaiush

Try converting to bytes and back. I find I need:

  query = util.parse_qs(req.args.encode(encoding='utf-8'))
  newquery = {}
   for q in query:
       val = query[q][0].decode('utf-8')1
       newquery[q.decode('utf-8')] = [val]
   query = newquery
   

wom-bat avatar Sep 06 '22 23:09 wom-bat