закодировать текст, содержащий шестнадцатеричную строку, в utf-8 - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь закодировать эту шестнадцатеричную строку: =D8=A8=D8=A7 <br /> =D8=B3=D9=84=D8=A7=D9=85 hello =D9=88 =D8=A7=D8=AD=D8=AA=D8=B1=D8=A7= =D9=85 в правильный формат, который должен быть utf-8 и должен отображаться как:

با
سلام hello و احترا = م

Что я пробовал до сих пор, так это то, что на первом шаге я пытался декодировать шестнадцатеричную строку с помощью функции декодирования, но, поскольку в моей шестнадцатеричной строке есть недопустимая цифра (=), выдается ошибка:

select decode(content, 'hex') from attachments

ОШИБКА: недопустимая шестнадцатеричная цифра: "="

Я также пытался напрямую преобразовать его в utf-8, но ничего не изменилось в выводе:

select convert_from(content::bytea, 'utf-8') from attachments

=D8=A8=D8=A7 <br /> =D8=B3=D9=84=D8=A7=D9=85 hello =D9=88 =D8=A7=D8=AD=D8=AA=D8=B1=D8=A7= =D9=85

1 Ответ

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

Попробуйте что-то вроде этого:

select convert(decode(replace(replace(content,'=',''),' ','20'), 'hex'),'UTF8') from attachments

или

select convert_from(decode(replace(replace(content,'=',''),' ','20'), 'hex')::bytea, 'utf-8') from attachments
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...