我有一个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返回正确的符号而不是这个六进制代码呢?任何信息都将是伟大的,欢迎!
发布于 2018-09-23 00:51:38
以下是以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。
发布于 2018-09-22 23:50:19
您是否尝试过隐式转换为Unicode?例如:
a = u"[狂おしく咲いた凄惨な骸は奏で、愛おしく裂いた少女は聖餐の詞を謳う。 #10] 謳"这使字符串Unicode受到支持,并可能修复您的问题。
https://stackoverflow.com/questions/52461661
复制相似问题