Python-Unicode-ajax表单发布

2024-05-19 12:37:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python上遇到了一个n00b问题,我在这里搜索了一段时间,但找不到合适的解决方案。。。在

我得到了一个utf8表单,我用ajax将其发布到python页面。我阅读了带有utf-8字符集的json simplejson。在

只要没有utf8和拉丁字符之类的混合字符,文本就可以了?!;,等等。。。在

UnicodeDecodeError:“ascii”编解码器无法解码位置0中的字节0xd7:序号不在范围内(128)

commentjsonarray = simplejson.loads(commentjson, encoding='utf-8')

我试了一堆东西,但我没能让它发挥作用。 救命啊。在

只是一个更新和更多的帮助代码,谢谢

commentjson=请求.POST['commentObj']

^{pr2}$

上面是python部分。 以下是javascript:

var walltext = $('walltext').value

 var commentObj = {"walltext": ""+walltext+"", "programid": programid, "userid": userid};
 var commentJSON = encodeURIComponent(Object.toJSON(commentObj));
if (walltext != '' || walltext == 'type here' || walltext.length > 0) {

    new Ajax.Request('/wall/new', {
        method: 'post',
        encoding: 'UTF-8',
        parameters: 'commentObj=' + commentJSON,
        onSuccess: function(request){
            var msg = request.responseText.evalJSON();
            if (msg) {

                var structure = '<div id="' + msg.msgid + '"><img src="' + msg.avatarurl + '" width="18" height="18"> ' + msg.username + ':' + msg.text + '<div id="frontSepLine"></div></div>';

                //$('programwall').insert({bottom:structure});
                refreshWall(msg.programid);

                $('walltext').value = 'type here';

                var objDiv = document.getElementById("programwall");
                objDiv.scrollTop = objDiv.scrollHeight;


            }



        }
    });

Tags: divvaluevarmsgutf8字符utfencoding
1条回答
网友
1楼 · 发布于 2024-05-19 12:37:21

您描述的情况对我来说很好(在python2.6上使用标准库json),无论是否使用显式编码(对于testring编码的utf-8不需要,因为这里的默认值是utf-8):

>> s = u'{"valá":"macché?!"}'.encode('utf8')
>>> json.loads(s)
{u'val\xe1': u'macch\xe9?!'}
>>> json.loads(s, encoding='utf-8')
{u'val\xe1': u'macch\xe9?!'}

还有simplejson 2.1.1(在2.6上确实是多余的,但是,哦,好吧;-):

^{pr2}$

你能更准确地描述你的问题吗?你对什么触发了你的错误的描述,也就是说“只要没有utf8和拉丁文字符的混合”?!“;,etc”,不会引起任何问题,那么给我们展示一个最微小的例子来说明是否会重现您的问题呢?在

相关问题 更多 >