返回十六进制符号

时间:2018-09-22 23:15:57

标签: python unicode discord.py

我有一个discord.py机器人,当前正在将此代码用于youtube命令,并从YouTube返回前5首歌曲

 for v in videolist:
    youtube  = etree.HTML(urlopen(v).read())
    video_title = youtube.xpath("//span[@id='eow-title']/@title")
    v_t = ''.join(video_title)
    vt.append(v_t)
  names = vt[1:6]
  await bot.say(vt)

这将获取所有歌曲的视频标题。

现在不是不是这样,但是我得到以下输出(缩短

`['Yowamushi Pedal - Love Hime Opening [Full Song]', 'Koi no Hime Hime Pettankoã\x80\x8cæ\x81\x8bã\x81®ã\x83\x92ã\x83¡ã\x83\x92ã\x83¡ã\x81ºã\x81£ã\x81\x9fã\x82\x93ã\x81\x93ã\x80\x8dæ\xad\x8cã\x81£ã\x81¦ã\x81¿ã\x81\x9fã\x80\x90ï¼\x8aã\x81ªã\x81¿ã\x82\x8aã\x82\x93ã\x80\x91', '~ hime hime `:

如果您没有注意到编码错误/问题,那么这里的内容看起来很垃圾:\x81\x93ã\x80\x8dæ\xad\x8cã\x81£ã\x81¦ã\x81¿ã\x81\x9fã\x80\x90ï¼\x8

我如何获取python返回正确的符号,而不是此十六进制代码?任何信息都很棒,欢迎您!

2 个答案:

答案 0 :(得分:2)

以下是用UTF-8编码的日语字符串的十六进制值:

e3, 80, 8c, e6, 81, 8b, e3, 81, ae, e3, 83, 92, e3, 83, a1, e3, 83, 92, e3, 83, a1, e3, 81, ba, e3, 81, a3, e3, 81, 9f, e3, 82, 93, e3, 81, 93, e3, 80, 8d, e6, ad, 8c, e3, 81, a3, e3, 81, a6, e3, 81, bf, e3, 81, 9f, e3, 80, 90, ef, bc, 8a, e3, 81, aa, e3, 81, bf, e3, 82, 8a, e3, 82, 93, e3, 80, 91

如果您斜视一下眼睛,就会看到其中的“垃圾外观”。

“默认修复程序”似乎可以正常工作,即从ISO 8859-1重新编码为UTF-8:

对于此输入:

s = 'Koi no Hime Hime Pettankoã\x80\x8cæ\x81\x8bã\x81®ã\x83\x92ã\x83¡ã\x83\x92ã\x83¡ã\x81ºã\x81£ã\x81\x9fã\x82\x93ã\x81\x93ã\x80\x8dæ\xad\x8cã\x81£ã\x81¦ã\x81¿ã\x81\x9fã\x80\x90ï¼\x8aã\x81ªã\x81¿ã\x82\x8aã\x82\x93ã\x80\x91'

此代码:

s.encode('latin-1').decode('utf-8')

产生以下输出:

'Koi no Hime Hime Pettanko「恋のヒメヒメぺったんこ」歌ってみた【*なみりん】'

我不确定您的机器人在做什么,但是它会以默认的ISO 8859-1编码获取文本,而不是正确地解码UTF-8。

答案 1 :(得分:1)

您是否尝试过隐式转换为Unicode? 例如:

    a = u"[狂おしく咲いた凄惨な骸は奏で、愛おしく裂いた少女は聖餐の詞を謳う。 #10] 謳"

这将支持Unicode字符串,并且可能会解决您的问题