5

私はボトルフレームワークを学んでおり、Pythonは初めてです。この困難に遭遇しただけです。次のようなアラビア語の文字列を返す簡単なメソッドを作成すると:

@route('/hello')
def hello():
    return u'سلام'

ターミナルに次のエラー メッセージが表示されます。

SyntaxError: ファイル hello.py の 15 行目に非 ASCII 文字 '\xd8' がありますが、エンコードが宣言されていません。詳細については、 http://www.python.org/peps/pep-0263.html を参照してください。

ボトルからすべてをインポートし、 「デフォルトのエンコーディングの変更」について説明しているドキュメントに記載されている他の方法を追加しようとしましたが、問題を解決できませんでした。だから私はあなたのヒントに感謝します。

4

4 に答える 4

7

テスト用のコードは次のとおりです。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from bottle import *

@route('/hello')
def hello():
    return u'سلام'

run(host='127.0.0.1', port=8080,reloader=True)

エディターで、[ファイル] > [名前を付けて保存...] を選択し、[テキスト エンコーディング] として [Unicode (UTF-8)] を選択し、hello.py として保存します。

次に、最新バージョンの bottle.py を github からダウンロードし、hello.pyと同じフォルダー (例: bottle-test) に配置します。

実行してみると、まったく問題ないようです。

~$ python --version
Python 2.6.7
~$ cd bottle-test
bottle-test$ python hello.py 

ブラウザでの結果

于 2012-03-23T14:03:45.293 に答える
5

追加するだけ

# -*- coding: whatever-encoding-you-use -*-

ファイルの上部に

于 2011-09-09T20:11:20.623 に答える
2

ファイルをutf-8として保存し、挿入します

#encoding: utf-8

ファイルの最初の行として

于 2011-09-09T20:12:36.160 に答える
2

スクリプトの先頭に、次のように入力します。

# encoding: utf-8

問題は、スクリプトが、UTF-8 に比べて制限されている latin1 エンコーディング (ISO 8859-1) で実行される可能性があることです。

于 2011-09-09T20:13:47.160 に答える