我在google-app-engine上使用django-nonrel。
当我发布外国字符时,
在我的案例中,韩文字符,其中包含多部分/表格数据。
<form method="post" enctype="multipart/form-data" action=".">
例如,如果我发布一个字符串'한글'
它在我的数据库中记录为字符串'7ZWc6riA'。
根据我的研究,这是jsp的常见案例,
并在Java中解决如下问题:
String name = multipartRequest.getParameter("name");
name = new String(name.getBytes("8859_1"),"utf-8");
但是,我无法在Django中找到相应的内容,
也不太确定我是否可以用相同的逻辑解决我的问题。
任何帮助/线索将不胜感激。
答案 0 :(得分:1)
我发现了这个问题的未解决问题。
问题2749:Blobstore处理程序打破数据编码 http://code.google.com/p/googleappengine/issues/detail?id=2749
您可以在上面的链接中找到几个不同的选项来解决此错误。
就个人而言,作为Django-nonrel用户,我会使用下面显示的解决方案:
import logging
import quopri
log = logging.getLogger(__name__)
class BlobRedirectFixMiddleware(object):
def process_request(self, request):
if request.method == 'POST' and 'HTTP_X_APPENGINE_BLOBUPLOAD' in request.META and request.META['HTTP_X_APPENGINE_BLOBUPLOAD'] == 'true':
request.POST = request.POST.copy()
log.info('POST before decoding: %s' % request.POST)
for key in request.POST:
if key.startswith('_') or key == u'csrfmiddlewaretoken':
continue
value = request.POST[key]
if isinstance(value,(str, unicode)):
request.POST[key] = unicode(quopri.decodestring(value), 'iso_8859-2')
log.info('POST after decoding: %s' % request.POST)
return None
答案 1 :(得分:0)
问题很可能在于您所服务的HTML而不是Django。我正在使用HTML5,我只需要在我的元素中使用这个元标记。我尝试了各种语言,并且输入都很好。
<head>
<meta charset="UTF-8" />
</head>