Provavelmente é um erro de encoding da API.
Se vc chamar diretamente https://api.adviceslip.com/advice/146
, vai ver que o retorno é:
{"slip": { "id": 146, "advice": "Today, do not use the words \u00e2\u20ac\u02dcKind of,' \u00e2\u20ac\u02dcSort of' or \u00e2\u20ac\u02dcMaybe.' It either is or it isn't."}}
E \u00e2\u20ac\u02dc
é a notação para escapes Unicode, que ao fazer o parsing da resposta (ao chamar response.json()
), acaba sendo convertido para os respectivos caracteres ‘
.
Provavelmente a API está convertendo erroneamente o caractere ‘
(LEFT SINGLE QUOTATION MARK) para outro encoding (possivelmente CP-1252) em vez de UTF-8 - similar ao que acontece aqui <- e como já explicado neste link, o problema está na origem (portanto, na API), que está retornando os dados incorretos.
Vc até poderia contornar fazendo o replace
, trocando esses caracteres por aspas. Mas o ideal é que a API corrija (ou então vc pode fazer um cache das frases, ou ter um banco de dados próprio com uma cópia delas, mas com o valor corrigido - só tem que ver se a API permite).