3

文字列を UTF-8 でエンコードし、対応する UTF-8 バイトを個別に表示したいと考えています。Python REPL では、次のようにするとうまくいくようです:

>>> unicode('©', 'utf-8').encode('utf-8')
'\xc2\xa9'

ここでは例としてU+00A9 COPYRIGHT SIGNを使用していることに注意してください。'\xC2\xA9'U+00C2 と U+00A9 という 2 つの別個のコード ポイントで構成される文字列です。(UTF-8 でデコードすると、元の文字列が返されます'\xA9'。)

次に、UTF-8 でエンコードされた文字列を JSON 互換の文字列に変換します。ただし、以下は私が望むことをしていないようです:

>>> import json; json.dumps('\xc2\xa9')
'"\\u00a9"'

U+00A9 (元のシンボル) を含む文字列が生成されることに注意してください。"\u00C2\u00A9"代わりに、有効な JSONのように見える UTF-8 でエンコードされた文字列が必要です。

TL;DR Python で'©'変換するにはどうすればよいですか? "\u00C2\u00A9"明らかな何かが欠けているように感じます — これを行う組み込みの方法はありませんか?

4

1 に答える 1

2

"\u00c2\u00a9"本当に出力が必要な場合はjson、入力として Unicode 文字列を指定してください。

>>> print json.dumps(u'\xc2\xa9')
"\u00c2\u00a9"

生のバイトからこの Unicode 文字列を生成できます。

s = unicode('©', 'utf-8').encode('utf-8')
s2 = u''.join(unichr(ord(c)) for c in s)

あなたが本当に欲しいのは"\xc2\xa9"出力だと思いますが、それを生成する方法はまだわかりません。

于 2013-06-19T19:43:01.217 に答える