Возвращая HEX для символов - PullRequest
       5

Возвращая HEX для символов

0 голосов
/ 23 сентября 2018

У меня есть бот discord.py, и в настоящее время я использую этот код для команды youtube и возвращает 5 лучших песен с Youtube

 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 голосов
/ 23 сентября 2018

Вот шестнадцатеричные значения японской строки, закодированной в 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 правильно.

0 голосов
/ 23 сентября 2018

Вы пытались конвертировать в Unicode неявно?Например:

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

Это делает строку поддерживаемой Unicode и может решить вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...