In [1]:
s = 'あいうえお'

In [2]:
b = s.encode('unicode-escape')

In [3]:
print(b)


b'\\u3042\\u3044\\u3046\\u3048\\u304a'

In [4]:
print(type(b))


<class 'bytes'>

In [5]:
s_from_b = b.decode('unicode-escape')

In [6]:
print(s_from_b)


あいうえお

In [7]:
print(type(s_from_b))


<class 'str'>

In [8]:
s_from_b_error = b.decode('utf-8')

In [9]:
print(s_from_b_error)


\u3042\u3044\u3046\u3048\u304a

In [10]:
print(type(s_from_b_error))


<class 'str'>

In [11]:
s_from_s = s_from_b_error.encode().decode('unicode-escape')

In [12]:
print(s_from_s)


あいうえお

In [13]:
print(type(s_from_s))


<class 'str'>

In [14]:
import codecs

s_from_s_codecs = codecs.decode(s_from_b_error, 'unicode-escape')

In [15]:
print(s_from_s_codecs)


あいうえお

In [16]:
print(type(s_from_s_codecs))


<class 'str'>

In [17]:
s_ascii = ascii('あ')

In [18]:
print(s_ascii)


'\u3042'

In [19]:
print(type(s_ascii))


<class 'str'>

In [20]:
print(s_ascii[0])


'

In [21]:
print(s_ascii[-1])


'

In [22]:
print(len(s_ascii))


8

In [23]:
print(ascii('あ') == "'\\u3042'")


True

In [24]:
s_unicode_escape = ascii('あ')[1:-1]

In [25]:
print(s_unicode_escape)


\u3042

In [26]:
print(type(s_unicode_escape))


<class 'str'>

In [27]:
print(s_unicode_escape == '\\u3042')


True

In [28]:
print('\u3042')



In [29]:
print(len('\u3042'))


1

In [30]:
print('\u3042' == 'あ')


True

In [31]:
print('\\u3042')


\u3042

In [32]:
print(r'\u3042')


\u3042

In [33]:
print(len(r'\u3042'))


6

In [34]:
with open('data/src/unicode_escape.txt') as f:
    s = f.read()
    print(s)
    print(type(s))
    print(len(s))


\u3042\u3044\u3046\u3048\u304a
<class 'str'>
30

In [35]:
with open('data/src/unicode_escape.txt', encoding='unicode-escape') as f:
    s = f.read()
    print(s)
    print(type(s))
    print(len(s))


あいうえお
<class 'str'>
5

In [36]:
b_json = b'{"a": "\u3042"}'

In [37]:
print(b_json)


b'{"a": "\\u3042"}'

In [38]:
print(b_json.decode())


{"a": "\u3042"}

In [39]:
print(b_json.decode('unicode-escape'))


{"a": "あ"}

In [40]:
import json

In [41]:
print(json.loads(b_json.decode()))


{'a': 'あ'}

In [42]:
print(type(json.loads(b_json.decode())))


<class 'dict'>

In [43]:
print(json.loads(b_json))


{'a': 'あ'}