質問

それを見てください:

import urllib
print urllib.urlencode(dict(bla='Ã'))

出力はです

bla=%C3%BC

私が欲しいのは簡単です。UTF-8の代わりにASCIIの出力が欲しいので、出力が必要です。

bla=%C3

私が試してみると:

urllib.urlencode(dict(bla='Ã'.decode('iso-8859-1')))

動作しません(すべてのPythonファイルはUTF-8エンコードされています):

'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

生産時には、入力が単一コード化されます。

役に立ちましたか?

解決 5

すべてのソリューションに感謝します。皆さんはまったく同じポイントに収束します。適切なコードを変更しました

.encode('iso-8859-1') 

.decode('iso-8859-1')

.encode( 'iso-8859-1')に戻ると動作します。

他のヒント

見て PythonのUnicode音訳:

from unidecode import unidecode
print unidecode(u"\u5317\u4EB0")

# That prints: Bei Jing

あなたの場合:

bla='Ã'
print unidecode(bla)
'A'

これはサードパーティのライブラリであり、以下を介して簡単にインストールできます。

$ git clone http://code.zemanta.com/tsolc/git/unidecode
$ cd unidecode
$ python setup.py install

UTF-8の代わりにASCIIの出力が必要です

それはASCIIではなく、0x80を超えるマップされた文字がありません。 ISO-8859-1、またはおそらくコードページ1252について話している(それに基づいてエンコードするウィンドウ)。

'Ã'.decode('iso-8859-1')

さて、それはあなたがキャラクターを保存するために使用したエンコードに依存します Ã ソースではそうですか?テキストエディターがUTF-8として保存したようです。 (ISO-8859-1のようなロケール固有のエンコーディングができるだけ早く離れる必要があるため、それは良いことです。)

保存したソースファイルはUTF-8であることをPythonに伝えてください PEP 263:

# coding=utf-8

urllib.quote(u'Ã'.encode('iso-8859-1'))    # -> %C3

または、その手間が不要な場合は、バックスラッシュエスケープを使用してください。

urllib.quote(u'\u00C3'.encode('iso-8859-1'))    # -> %C3

いずれにせよ、最新のWebAppは、ISO-8859-1/CP1252ではなく、その入力にUTF-8を使用する必要があります。

かなりうまく機能しているのはこの方法です:

import unicodedata
unicodedata.normalize('NFKD', 'Ã'.decode('UTF-8')).encode('ascii', 'ignore')

入力が実際にUTF-8であり、ISO-8859-1が出力として必要な場合(これはASCIIではありません)、必要なものは次のとおりです。

'ñ'.decode('utf-8').encode('iso-8859-1')

パッケージ unihandecode

UnicodeテキストのUS-ASCIIの音訳。
Python unidecodeの改良バージョン、つまりPythonポートオブテキスト:: Sean M. BurkeによるUnideCode Perlモジュール。

pip install Unihandecode

その後 python

import unihandecode
print(unihandecode.unidecode(u'Ã'))

プリント A.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top