$this->sendJson() error: Malformed UTF-8 characters, possibly incorrectly encoded

- Čamo
- Člen | 798
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 | 528
@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 | 82
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.