-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest_CodeConvert.py
138 lines (96 loc) · 4.71 KB
/
test_CodeConvert.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# -*- coding: utf-8 -*-
import six
from CodeConvert import CodeConvert as cc
def utf8_test(obj):
six.print_('>>> 转化为 utf8 编码')
utf = cc.Convert2Utf8_test(obj)
six.print_('>>>', utf, '<==>', repr(obj), '\n')
def unicode_test(obj):
six.print_('>>> 转化为 unicode 编码')
uni = cc.Convert2Unicode_test(obj)
six.print_('>>>', uni, '<==>', repr(obj), '\n')
def _Convert2Utf8():
# >>> For All
# >>> 双反斜杠字符: obj.decode('string_escape')
# u 内含 gbk 编码字串, 先encode('latin1')为gbk编码,再decode('gbk')为unicode编码,再encode('utf8')为utf8编码
utf8_test(u'\xd7\xee\xba\xf3\xd2\xbb\xb8\xf6\xce\xca\xcc\xe2')
utf8_test(u'\\xd7\\xee\\xba\\xf3\\xd2\\xbb\\xb8\\xf6\\xce\\xca\\xcc\\xe2')
# u 内含 utf8 编码字串, 直接encode('latin1')为utf8编码
utf8_test(u'\xe6\x9c\x80\xe5\x90\x8e\xe4\xb8\x80\xe4\xb8\xaa\xe9\x97\xae\xe9\xa2\x98')
utf8_test(u'\\xe6\\x9c\\x80\\xe5\\x90\\x8e\\xe4\\xb8\\x80\\xe4\\xb8\\xaa\\xe9\\x97\\xae\\xe9\\xa2\\x98')
utf8_test(u'error\xe6\x9c\x80\xe5\x90\x8e\xe4\xb8\x80\xe4\xb8\xaa\xe9\x97\xae\xe9\xa2\x98')
# unicode 编码字串, 直接encode('utf8')为utf8编码
utf8_test(u'\u6700\u540e\u4e00\u4e2a\u95ee\u9898')
utf8_test(u'\\u6700\\u540e\\u4e00\\u4e2a\\u95ee\\u9898')
# gbk 编码字串, 先decode('gbk')为unicode编码,再encode('utf8')为utf8编码
utf8_test('\xd7\xee\xba\xf3\xd2\xbb\xb8\xf6\xce\xca\xcc\xe2')
utf8_test('\\xd7\\xee\\xba\\xf3\\xd2\\xbb\\xb8\\xf6\\xce\\xca\\xcc\\xe2')
# utf8 编码字串, 直接return
utf8_test('\xe6\x9c\x80\xe5\x90\x8e\xe4\xb8\x80\xe4\xb8\xaa\xe9\x97\xae\xe9\xa2\x98')
utf8_test('\\xe6\\x9c\\x80\\xe5\\x90\\x8e\\xe4\\xb8\\x80\\xe4\\xb8\\xaa\\xe9\\x97\\xae\\xe9\\xa2\\x98')
# 无 u 的 unicode 编码字串, 先decode('raw_unicode_escape')为unicode编码, 再encode('utf8')为utf8编码
utf8_test('\u6700\u540e\u4e00\u4e2a\u95ee\u9898')
utf8_test('\\u6700\\u540e\\u4e00\\u4e2a\\u95ee\\u9898')
# utf8 编码汉字
utf8_test('最后一个问题')
# unicode 编码汉字
utf8_test(u'最后一个问题')
# utf8 编码英文
utf8_test('The last question')
# unicode 编码英文
utf8_test(u'The last question')
# 全角
utf8_test('¥全角¥')
utf8_test(u'¥全角¥')
# 半角
utf8_test('¥半角¥')
utf8_test(u'¥半角¥')
# emoji
utf8_test(u'🌴 新生°')
utf8_test('\\U0001f334 \\u65b0\\u751f\xb0')
def _Convert2Unicode():
# u 内含 gbk 编码字串, 先encode('latin1')为gbk编码,再decode('gbk')为unicode编码
unicode_test(u'\xd7\xee\xba\xf3\xd2\xbb\xb8\xf6\xce\xca\xcc\xe2')
unicode_test(u'\\xd7\\xee\\xba\\xf3\\xd2\\xbb\\xb8\\xf6\\xce\\xca\\xcc\\xe2')
# u 内含 utf8 编码字串, 直接encode('latin1')为utf8编码, 再decode('utf8')为unicode编码
unicode_test(u'\xe6\x9c\x80\xe5\x90\x8e\xe4\xb8\x80\xe4\xb8\xaa\xe9\x97\xae\xe9\xa2\x98')
unicode_test(u'\\xe6\\x9c\\x80\\xe5\\x90\\x8e\\xe4\\xb8\\x80\\xe4\\xb8\\xaa\\xe9\\x97\\xae\\xe9\\xa2\\x98')
unicode_test(u'error\xe6\x9c\x80\xe5\x90\x8e\xe4\xb8\x80\xe4\xb8\xaa\xe9\x97\xae\xe9\xa2\x98')
# unicode 编码字串, 直接return
unicode_test(u'\u6700\u540e\u4e00\u4e2a\u95ee\u9898')
unicode_test(u'\\u6700\\u540e\\u4e00\\u4e2a\\u95ee\\u9898')
# gbk 编码字串, 直接decode('gbk')为unicode编码
unicode_test('\xd7\xee\xba\xf3\xd2\xbb\xb8\xf6\xce\xca\xcc\xe2')
unicode_test('\\xd7\\xee\\xba\\xf3\\xd2\\xbb\\xb8\\xf6\\xce\\xca\\xcc\\xe2')
# utf8 编码字串, 直接decode('utf8')为unicode编码
unicode_test('\xe6\x9c\x80\xe5\x90\x8e\xe4\xb8\x80\xe4\xb8\xaa\xe9\x97\xae\xe9\xa2\x98')
unicode_test('\\xe6\\x9c\\x80\\xe5\\x90\\x8e\\xe4\\xb8\\x80\\xe4\\xb8\\xaa\\xe9\\x97\\xae\\xe9\\xa2\\x98')
# 无 u 的 unicode 编码字串, 直接decode('raw_unicode_escape')为unicode编码
unicode_test('\u6700\u540e\u4e00\u4e2a\u95ee\u9898')
unicode_test('\\u6700\\u540e\\u4e00\\u4e2a\\u95ee\\u9898')
# utf8 编码汉字
unicode_test('最后一个问题')
# unicode 编码汉字
unicode_test(u'最后一个问题')
# utf8 编码英文
unicode_test('The last question')
# unicode 编码英文
unicode_test(u'The last question')
# 全角
unicode_test('¥全角¥')
unicode_test(u'¥全角¥')
# 半角
unicode_test('¥半角¥')
unicode_test(u'¥半角¥')
# emoji
unicode_test(u'🌴 新生°')
unicode_test('\\U0001f334 \\u65b0\\u751f\xb0')
# \ 开头
# unicode_test('\·*媛媛。')
# unicode_test(u'\·*媛媛。')
# unicode_test('\\\xb7*\\u5a9b\\u5a9b\\u3002')
def main():
_Convert2Utf8()
_Convert2Unicode()
if __name__ == '__main__':
main()