首頁  >  問答  >  主體

python 编码问题,求助各位大神

想请问下拿到一串unicode编码串,要怎么才能转换中文输出

我发现直接

print u'\u4ed7\u5251\u5929\u6daf'

或者

a = u"\u4ed7\u5251\u5929\u6daf"
print a

是可以输出中文

但是如果把串赋值到变量,用decode,encode转换都不行

a = '\u4ed7\u5251\u5929\u6daf'

不知道怎样print a才能输出中文了?

黄舟黄舟2764 天前490

全部回覆(4)我來回復

  • 黄舟

    黄舟2017-04-17 17:54:27

    在Python3中,字串型全改成unicode的了,你如下用沒問題,輸出是一樣的

    # -*- coding: utf-8 -*-
    
    a = u"\u4ed7\u5251\u5929\u6daf"
    print(a, len(a), type(a))
    
    b = "\u4ed7\u5251\u5929\u6daf"
    print(b, len(b), type(b))
    
    

    而在Python2.7中,加u表示unicode,不加表示字符串,所以你直接去掉u並得到的並不是等價的字符串,你可以分別打印數據類型、字符串長度就能看出來

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 17:54:27

    最後一句話
    a = 'u4ed7u5251u5929u6daf'
    a 實際上已經是字符串了
    因此把轉換成unicode才能print打印中文,
    可以使用
    print a.decode('unicode-escape')要把參考參考
    可以使用
    print a.decode('unicode-escape')要把參考參考

    可以使用🎜print a.decode')要把http://stackoverflow.com/questions/10268518/python-string-to-unicode🎜

    回覆
    0
  • 黄舟

    黄舟2017-04-17 17:54:27

    最後一句 a = 'u4ed7u5251u5929u6daf' 為什麼要把引號前的u丟掉呢?

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:54:27

    Python字串前面那個u表示這個字串要以unicode編碼來解析。
    你使用decode,意思是你要將'u4ed7u5251u5929u6daf'這個字串,轉成unicode編碼。

    回覆
    0
  • 取消回覆