私はこれを使用しました:
u = unicode(text, 'utf-8')
しかし、Python 3でエラーが発生します(または...何かを含めるのを忘れたのかもしれません)。
NameError: global name 'unicode' is not defined
ありがとうございました。
Python3では、リテラル文字列はデフォルトでUnicodeです。
text
がbytes
オブジェクトであると仮定すると、text.decode('utf-8')
を使用します
Python2のunicode
は、Python3のstr
と同等であるため、次のようにも記述できます。
str(text, 'utf-8')
ご希望の場合。
回避策として、私はこれを使用しています:
# Fix Python 2.x.
try:
UNICODE_EXISTS = bool(type(unicode))
except NameError:
unicode = lambda s: str(s)
Python 3.0の新機能 言います:
すべてのテキストはUnicodeです。ただし、エンコードされたUnicodeはバイナリデータとして表されます
Utf-8を出力していることを確認したい場合は、このページの .0のユニコード の例をご覧ください。
b'\x80abc'.decode("utf-8", "strict")
python 3.x の最も簡単な方法
text = "hi , I'm text"
text.encode('utf-8')
私が長年使用していたPython 2プログラムには、次の行がありました。
ocd[i].namn=unicode(a[:b], 'utf-8')
これはPython 3では機能しませんでした。
しかし、このプログラムは以下で動作することが判明しました。
ocd[i].namn=a[:b]
そもそもなぜユニコードを置いたのか覚えていませんが、名前にスウェーデン語の文字「åäöÅÄÖ」を含めることができるからだと思います。しかし、「ユニコード」なしでも動作します。
これにより、\ uFE0F、\ u000Aなどの文字を変換する問題を解決しました。また、16バイトでエンコードされた絵文字も。
example = 'raw vegan chocolate cocoa pie w chocolate & Vanilla cream\\uD83D\\uDE0D\\uD83D\\uDE0D\\u2764\\uFE0F Present Moment Caf\\u00E8 in St.Augustine\\u2764\\uFE0F\\u2764\\uFE0F '
import codecs
new_str = codecs.unicode_escape_decode(example)[0]
print(new_str)
>>> 'raw vegan chocolate cocoa pie w chocolate & Vanilla cream\ud83d\ude0d\ud83d\ude0d❤️ Present Moment Cafè in St.Augustine❤️❤️ '
new_new_str = new_str.encode('utf-16', 'surrogatepass').decode('utf-16')
print(new_new_str)
>>> 'raw vegan chocolate cocoa pie w chocolate & Vanilla cream????????❤️ Present Moment Cafè in St.Augustine❤️❤️ '