4

フラスコ管理者を使用してアプリケーションのバックエンド インターフェイスを構築しようとしています。フォームにアクセスして新しいエントリを作成しようとすると、次のようになります。

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 13: ordinal not in range(128)

スタック トレースを調べると、問題はテーブル内の一部の項目に非 ASCII 文字が含まれていることです。この問題を解決するにはどうすればよいですか? ありがとう!

4

3 に答える 3

1

このようなユニコード文字列を使用する必要があります

u"whaterver string"
于 2015-06-26T23:21:29.513 に答える
1

一部のレガシーコードで同じ問題が発生しました。この問題は、次の場合に発生します。

  1. Python 2 を使用し、
  2. str(ではなくunicode) オブジェクトを介して非 ASCII データを表現し、
  3. あなたのPythonシステムエンコーディングはascii(ほとんどの場合)です。

2 番目の問題は、SQLAlchemyStringの列があったはずの場所にあることUnicode、または'šömething'「u'šömething」と書くべきときに書いたことに起因する可能性があります。問題の実際の原因を特定するのは非常に難しい場合があります。

ただし、方程式の 3 番目の要素をハッキングすることで簡単に解決できます (ただし、これは一般的には推奨されません)。これらの行をコードのどこかに追加すると、問題が解決するはずです (実際の問題をカーペットの下に押し込むことによって)。

import sys
reload(sys)
sys.setdefaultencoding('UTF8')
于 2018-12-06T10:24:53.187 に答える