辞書アプリにボトル(bottlepy, bottle.py)を使ってURL指定(GET)のように入力できるようにしたいです
http://dictionary_domain/lookup/Thanksgiving
使用して
@bottle.route('/lookup/<word>')
def request( word="" ):
print(word)
問題は、ASCII 以外の文字が URLエンコードされており (通常、これはブラウザーが処理します)、 bottle.py の解析または一般的な文字エンコード設定に問題があるようです。例:
..ルックアップ/オリベノール:
"Olivenöl"
..ルックアップ/その他:
Traceback (most recent call last):
File "bottle.py", line 763, in _handle
return route.call(**args)
File "bottle.py", line 1572, in wrapper
rv = callback(*a, **ka)
File "dictionary.py", line 63, in request
print( "bottle: \"{}\" requested".format( word ) )
File "C:\Python32\lib\encodings\cp850.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\x96' in position 10: character maps to <undefined>
問題の文字はにエンコードされます
capital Ö -> %C3%96
minscule ö -> %C3%B6
出力は ö -> c3b6 にデコードされます
しかし、エンコーディングの混乱を修正する方法がわかりません.. bottle.py がこれを処理する必要があると思います。
スクリプトは使用されて# -*- coding: utf-8 -*-
おり(ファイルはBOM付きのUTF-8です)、通常の文字列はコンソールに正常に出力されます。
ソフトウェア バージョン: bottle.py: '0.11.4' および '0.12-dev' Python 3.2.3 (デフォルト、2012 年 4 月 11 日 07:15:24) [MSC v.1500 32 ビット (Intel)] on win32