$this->sendJson() error: Malformed UTF-8 characters, possibly incorrectly encoded
- Čamo
- Člen | 786
Zdravím,
Prosím vás mám script ktorý cez curl stiahne pdf súbor a potom by som ho chcel ako json poslať do browsera ako ajax response. Curl prebehne správne a súbor sa stiahne a keď ho uložím na disk je v poriadku. Ale keď ho chcem tie isté dáta poslať ako json cez
$this->sendJson(['file' => $data])
tak dostanem error: Malformed UTF-8 characters, possibly incorrectly encoded
Vie mi niekto povedať v čom je problém? Ďakujem.
Editoval Čamo (15. 6. 2022 13:59)
- nightfish
- Člen | 472
@emololftw Formát JSON vyžaduje, aby řetězce v něm byly
kódovány ve formátu Unicode. Ve webovém světě se pravděpodobně
nejčastěji používá UTF-8. Data PDF souboru jsou binární data, která
v UTF-8 nedávají smysl a nejsou validní. Když tedy chceš binární PDF
data poslat JSONem, musíš je na jedné straně (v PHP skriptu tam, kde je
sendJson()
) převést na něco, co je s UTF-8 kompatibilní a na
druhé straně převést zpět na binární data.
K tomu můžeš využít např. funkce base64_encode()
na
straně jedné a base64_decode()
na straně druhé.
- emololftw
- Člen | 81
nightfish napsal(a):
@emololftw Formát JSON vyžaduje, aby řetězce v něm byly kódovány ve formátu Unicode. Ve webovém světě se pravděpodobně nejčastěji používá UTF-8. Data PDF souboru jsou binární data, která v UTF-8 nedávají smysl a nejsou validní. Když tedy chceš binární PDF data poslat JSONem, musíš je na jedné straně (v PHP skriptu tam, kde je
sendJson()
) převést na něco, co je s UTF-8 kompatibilní a na druhé straně převést zpět na binární data.K tomu můžeš využít např. funkce
base64_encode()
na straně jedné abase64_decode()
na straně druhé.
Děkuji mnohokrát. Důvod v mém případě byl nevalidní UTF-8 znak, který jsem se snažil poslat pomocí JSON.