JSON přes POST – problém s diakritikou
- gawex
- Člen | 8
Ahoj.
Píšu aplikaci která komunikuje s docházkovým zařízením formátem JSON. Zařízení pošle v hlavičce toto:
POST /zapis/databaze HTTP/1.1
HOST: www.mojeaplikace.cz
content-length: 60
content-type: application/json
{"command":"identification","type":"imprint","value":"1998"}`
Aplikace (server) pak odpoví:
A-Json: : {"user_id":1234,"name":"Jan","surname":"Sekera"}
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Content-Length: 5
Content-Type: application/json; charset=UTF-8
Date: Tue, 08 Aug 2017 12:26:00 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Server: Apache/2.4.25 (Win32) OpenSSL/1.0.2j PHP/5.6.30
Set-Cookie: PHPSESSID=3ma9bhopt2b427cnvvfkicl0p7; expires=Tue, 22-Aug-2017 12:26:00 GMT; Max-Age=1209600; path=/; httponly; PHPSESSID=np71vbci9j9a25ied7l3fj2bb6; expires=Tue, 22-Aug-2017 12:26:00 GMT; Max-Age=1209600; path=/; HttpOnly; PHPSESSID=np71vbci9j9a25ied7l3fj2bb6; expires=Tue, 22-Aug-2017 12:26:00 GMT; Max-Age=1209600; path=/; HttpOnly
Vary: X-Requested-With
X-Frame-Options: SAMEORIGIN
X-Powered-By: Nette Framework
Nic neočekávaného, všechno funguje jak má.
Problém ale nastane v okamžiku, kdy se v hlavičce vyskytuje nějaká
diakritika. Například je jméno Tomáš…atd. Server pak znaky á a š
nahradí zcela náhodnými znaky.
Problém s diakritikou se mi nedaří vyřešit. Když odpověď pošlu v těle a né v hlavičce, tak je všechno v pořádku.
Vyzkoušel jsem i zaslání diakritiky ze strany zařízení (tedy poslaní POST hlavičky na server). Tady ale diakritiku, stejně jako v případě formuláře v pořádku přijal.
Dotaz: Poradíte prosím jak na to? A je vůbec možné posílat ze serveru hlavičky s diakritikou?
- matopeto
- Člen | 395
v hlavicke to samozrejme ide len to musis spravne escapovat (Podla RFC2047).
Ale radsej by som to v hlavicke neposielal preco to potrebujes v hlavicke? :)
https://tools.ietf.org/html/rfc7230#…
Historically, HTTP has allowed field content with text in the
ISO-8859–1 charset [ISO-8859–1], supporting other charsets only
through use of [RFC2047] encoding. In practice, most HTTP header
field values use only a subset of the US-ASCII charset [USASCII].
Newly defined header fields SHOULD limit their field values to
US-ASCII octets. A recipient SHOULD treat other octets in field
content (obs-text) as opaque data.
Editoval matopeto (8. 8. 2017 15:18)