Zadejte hledaný výraz...

XML parsování a nestandardní znaky

Spouter
verified
rating uzivatele
(2 hodnocení)
5. 8. 2020 16:37:23
Poradí prosím někdo, jak se zbavit symbolu "průměr" ⌀ z XML dokumentu a to přímo v PHP? Potřebuji dostat XML do databáze.
5. 8. 2020 16:37:23
https://webtrh.cz/diskuse/xml-parsovani-a-nestandardni-znaky/#reply1459433
David Musil
verified
rating uzivatele
(69 hodnocení)
5. 8. 2020 16:56:42
Kdyz das odkaz na ten XML soubor a uvidime v jakem formatu tam ten znak je zapsan, tak i dokazu poradit, jak se ho zbavit. Nahrada znaku nemusi fungovat, kdyz tam bude treba entita.
5. 8. 2020 16:56:42
https://webtrh.cz/diskuse/xml-parsovani-a-nestandardni-znaky/#reply1459432
Spouter
verified
rating uzivatele
(2 hodnocení)
5. 8. 2020 17:05:24
Napsal musil.david;1592879
Kdyz das odkaz na ten XML soubor a uvidime v jakem formatu tam ten znak je zapsan, tak i dokazu poradit, jak se ho zbavit. Nahrada znaku nemusi fungovat, kdyz tam bude treba entita.
Poslal jsem PM s odkazem. Není to tam právě jako entita.
Stačí vyhledat např. EAN 8595126976695 a v Properties->Property je ten průměr.
5. 8. 2020 17:05:24
https://webtrh.cz/diskuse/xml-parsovani-a-nestandardni-znaky/#reply1459431
David Musil
verified
rating uzivatele
(69 hodnocení)
5. 8. 2020 17:15:26
A jednoduche nepujde?
Poradil jsi si s parsovanim a tohle nejde? :)
5. 8. 2020 17:15:26
https://webtrh.cz/diskuse/xml-parsovani-a-nestandardni-znaky/#reply1459430
Spouter
verified
rating uzivatele
(2 hodnocení)
5. 8. 2020 17:34:14
No právě že nejde... Za prvé ten znak na průměr nezná ani PSpad ani Notepad++. Soubor se tváří, že je kódován v UTF-8, ale jak jej tam dostali je mi záhadou. Jde to otevřít v poznámkovém bloku a dám tam ten symbol průměru, ale i tak se prostě neodstraní.
Dostanu tohle chybovou hlášku:
Error description: Incorrect string value: 'x80 sacxC3...' for column 'Properties' at row 1 Product-code:414262
Taktéž když si zobrazím, co se vkládá do databáze dostanu:
Max. průtok:3080l/h = 52l/min|Napětí/frekvence:230V/50Hz|� sacího/výstup. hrdla:1"|Příkon:500W|Max. výtlak:31m|Max. sací hloubka:9m|Značka:EXTOL CRAFT|Hmotnost:9kg
Místo ⌀ je tam �
5. 8. 2020 17:34:14
https://webtrh.cz/diskuse/xml-parsovani-a-nestandardni-znaky/#reply1459429
Jakub Stančo
verified
rating uzivatele
(5 hodnocení)
5. 8. 2020 18:58:17
Ten znak má 3 bajty v UTF-8 (0xE2 0x8C 0x80), pokud se to vloží do kódu přímo znak, tak to asi převede do UTF-16 a to je 0x23 0x00. Už jsem dlouho nedělal nic v php, ale nejdřív bych si to asi převedl na jiné kódování.
5. 8. 2020 18:58:17
https://webtrh.cz/diskuse/xml-parsovani-a-nestandardni-znaky/#reply1459428
Spouter
verified
rating uzivatele
(2 hodnocení)
5. 8. 2020 19:39:55
Napsal JakubStan;1592891
Ten znak má 3 bajty v UTF-8 (0xE2 0x8C 0x80), pokud se to vloží do kódu přímo znak, tak to asi převede do UTF-16 a to je 0x23 0x00. Už jsem dlouho nedělal nic v php, ale nejdřív bych si to asi převedl na jiné kódování.
No problém je, že xml soubor je v UTF-8. Zkoušel rozné formy převodu, ale problém je, že nemůžu určit výchozí kódování toho znaku. UTF-8 jako zbytek souboru to není, tudíž nevím, co s tím PHP při načtení do proměnné provede. UTF-16 to ale také není. Zkoušel jsem pomocí převodových tabulek zachytit tento znak. Pokud převodu celé XML do jiného kódování, dostanu prakticky to samé. Zase nejsem schopný ten znak nahradit.
5. 8. 2020 19:39:55
https://webtrh.cz/diskuse/xml-parsovani-a-nestandardni-znaky/#reply1459427
Jakub Stančo
verified
rating uzivatele
(5 hodnocení)
5. 8. 2020 20:04:59
Hodně editorů matlá UTF-8 znaky, které mají 3 bajty, jak se jim zachce. Proto je potřeba se podívat na ten soubor nějakým hexa prohlížečem, který ukazuje reálná data.
5. 8. 2020 20:04:59
https://webtrh.cz/diskuse/xml-parsovani-a-nestandardni-znaky/#reply1459426
Jan Kuthan
verified
rating uzivatele
(48 hodnocení)
6. 8. 2020 10:06:09
A potřbuješ v DB to xml čitelné? Jak často se hodnoty z db loadují, vyhledáváš nad tím nějak? Co je to za db? :)
Můžeš to třeba zakodovat do base64 a nebude tě nic víc trápit, osobně nejraději ukládám takováhle data převedená do json dat v postgresu, dovoluje ti to pak mít datový typ jsonb, kde můžeš nativně vyhledávat pomocí query i v json struktuře (bez %like% a podobných zhůvěřilostí)
6. 8. 2020 10:06:09
https://webtrh.cz/diskuse/xml-parsovani-a-nestandardni-znaky/#reply1459425
Spouter
verified
rating uzivatele
(2 hodnocení)
6. 8. 2020 12:47:32
Problém je již vyřešen. Nakonec jsem zjistil, že chyba byla ve velikosti. V xml feedu byl znak ⌀ uveden jako velké písmeno/znak. Všechny editory, prohlížeče atd. to dokázaly zpracovat a zobrazit správně jako onen znak, avšak PHP to nedokáže. Všechny texty v této části xml jsou malým písmem, tak by mě nenapadlo, že zrovna znak bude velkým. Stačí tedy převést znak ⌀ na malý a následně již vše v PHP funguje. Zádrhel byl, že pokud se znak kopíroval, tak se automaticky převedl na malý. Oznámil jsem to i adminovi, co má vše ohledně feedu na starosti a nyní se znak ve feedu uvádí jako malý standardně, aby s tím nikdo další neměl problém.
6. 8. 2020 12:47:32
https://webtrh.cz/diskuse/xml-parsovani-a-nestandardni-znaky/#reply1459424
Pro odpověď se přihlašte.
Přihlásit