1

多くの人がこのトピックに取り組んでいることは知っていますが、何らかの理由で GAE アプリで UTF-8 エンコーディングを動作させることができません。オンライン フォームからドイツ語の文字列を取得し、それを String プロパティに格納しようとしています。コードは次のようになります。

import from google.appengine.ext import db
import webapp2

class Item(db.Model):
  value = db.Stringproperty()

class ItemAdd(webapp2.RequestHandler):
    def post(self):
       item - Item()
       value = str(self.request.get(u'value'))
       item.value = value.encode('utf-8')
       item.put()

これから得られるエラーは次のとおりです。

File "C:\xxx", line 276, in post
value = str(self.request.get('value'))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 12: ordinal not in range(128)

誰かが私が間違っていることを見ていますか?

アップデート

私が取得している文字列は次のとおりです: "Dit is een länge" プロパティ タイプを TextProperty に変更すると、すべてが機能しますが、それをフィルタリングできる必要があるため、問題は解決しません。

4

2 に答える 2

2

Webapp2 は utf-8 を処理します。投稿で webapp2 は、utf-8 multidict を提供します。したがって、自分で行う必要はありません。デバッガーを使用すると、self.request で multidict を見つけることができます

class ItemAdd(webapp2.RequestHandler):

    def post(self):
       Item(value = self.request.POST('value')).put()

utf-8 を使用するには、この sblog 投稿を読み、決して使用しないでください: str() !!!! str() はユニコードからバイナリを作成します http://blog.notdot.net/2010/07/Getting-unicode-right-in-Python

そして python27 を使用すると、コードを次のように開始できます。

#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
于 2013-01-30T21:20:28.737 に答える
-1

Python スクリプトがデータや文字列を受け取るときは、ファイルのエンコーディングが常に受け取るものと同じになるように注意する必要があります。これをファイルの先頭に追加する必要があります。

#!/usr/bin/python
# -*- coding: utf-8 -*-
于 2013-01-30T20:21:14.290 に答える