\uXXXX という書式、Unicodeエスケープされた文字とASCII文字だけの文字列
を例にする。
\u3042\u3044\u3046\u3048\u304a_%abc123_\uff76\uff77\uff78\uff79\uff7a
Python では、\uXXXX 書式文字列は、\をエスケープして文字列として持つことになる。
ustr = '\\u3042\\u3044\\u3046\\u3048\\u304a_%abc123_\\uff76\\uff77\\uff78\\uff79\\uff7a' print(ustr) # \u3042\u3044\u3046\u3048\u304a_%abc123_\uff76\uff77\uff78\uff79\uff7a
いったん、encode() でバイナリにしてから、
unicode-escape を指定してデコード
s = ustr.encode().decode('unicode-escape') print(s) # あいうえお_%abc123_カキクケコ
通常の文字列を Unicodeに
単に encode だけだと bytes型になる
s = 'あいうえお_abc123_カキクケコ' u = s.encode('unicode-escape') print(u) # b'\\u3042\\u3044\\u3046\\u3048\\u304a_abc123_\\uff76\\uff77\\uff78\\uff79\\uff7a' print(type(u)) # <class 'bytes'>
通常の文字列で、\uXXXX 書式文字列にする
utf-8 にデコードする
s = 'あいうえお_abc123_カキクケコ' u = s.encode('unicode-escape') x = u.decode('utf-8') print(x) # \u3042\u3044\u3046\u3048\u304a_abc123_\uff76\uff77\uff78\uff79\uff7a print(type(x)) # <class 'str'>