这么一个字符串: \u60a8
,包含 反斜杠 \、 u 、 6 、 0 、 a 、 8 ,共 6 个字符,如何将它转化为对应的汉字“您”?
>>> r'\u60a8' '\\u60a8' >>> print(r'\u60a8') \u60a8 区别于一般情况: >>> print('\u60a8') 您 我想要的是: >>> print( magic(r'\u60a8')) 您
搜了半天,讲得都是 byte 和 string 的转化,这个 string 到 string 的也不知道怎么描述了。其实不算编码问题,只是靠的比较近
望 v 友赐教!
忘了说了是Python3,问题已经解决, 感谢2楼和3楼给出的2种解决方法:
1,用正则匹配出16进制字符然后: >>> chr(0x60a8) '您' 2, >>> eval('"' + r'\u60a8' + '"') '您'
![]() | 1 xmh51 2017-04-17 09:33:22 +08:00 http://www.atool.org/chinese2unicode.php ASCII 转中文 |
![]() | 2/span> AlphaTr 2017-04-17 09:35:39 +08:00 ![]() 不懂 python ,说下其他语言的处理方式:正则匹配 `\u[a-f0-9]{4}` 然后取出对应的 16 进制字符串,转换为相应的字符编码,再求出对应字符,最后替换原字符~ |
![]() | 3 ehs2013 2017-04-17 09:39:37 +08:00 ![]() 危险但是有效的手段: input = r'\u60a8' output = eval('"' + input + '"') print(output) |
![]() | 4 libook 2017-04-17 09:42:52 +08:00 via Android 这个是 js 里的转义字符,在 js 的输出上和汉字是等价的。 不清楚 python 的编码方式, JS 的 unicode 编码方式和 unicode 官方编码还是有点区别的,需要用公式换算,建议看看 js 的 unicode 编码标准 |
![]() | 5 est 2017-04-17 09:46:51 +08:00 print '\u60a8'.decode('raw_unicode_escape') 您 |
![]() | 6 est 2017-04-17 09:47:12 +08:00 ![]() print '\u60a8'.decode('unicode_escape') 您 |
![]() | 7 onlyice 2017-04-17 10:02:29 +08:00 r'\u60a8'.decode('unicode_escape') est 正解,但是打少了 r 前缀 |
![]() | 9 enenaaa 2017-04-17 11:26:09 +08:00 ![]() @onlyice python 3 应该是 b 前缀, b'\u60a8'.decode('unicode_escape') 这个才是比较好的解决办法 |
![]() | 12 syahd 2017-04-17 12:28:19 +08:00 via Android 我也在 v2 问过这个问题 |
![]() | 13 1OF7G OP ![]() |
![]() | 14 flniu 2017-04-17 13:10:56 +08:00 楼上的朋友们看清楼主的问题了吗? r'\u60a8' 和 '\u60a8' 完全不是一回事啊。 |
![]() | 15 flniu 2017-04-17 13:17:30 +08:00 哦,楼上是 Python2 的示例,看错…… Python2 的 r'\u60a8' 等价于 Python3 的 rb'\u60a8' 和 r'\u60a8'.encode() |
![]() | 16 1OF7G OP 画了个图,蓝色的方框是 Python3 表达式,大方框内表示等价的同一对象 这个问题最佳方法应该是: >>> r'\u60a8'.encode('utf-8').decode('unicode_escape') '您' 根据图片就很容易理解了 ![]() |
![]() | 17 jason19659 2017-04-17 20:36:58 +08:00 java : System.out.println("\u60a8"); |
![]() | 18 Kisesy 2017-04-17 21:14:25 +08:00 |
![]() | 19 jason19659 2017-04-17 22:42:17 +08:00 @Kisesy #18 这个 json 库应该都有参数能解析 |