Encoding XMLa na WordPressu
Situacija sledeca, prosle godine selim blog (wordpress) sa sharing hostinga na dedicated, sve funkcionise bez problema. Pre par meseci, gasim dedicated i vracam se na isti sharing hosting i problemi sa xml RSSa pocinju.
Naime, RSS feed koji izlazi sa feedurnera ima problem sa encoding. Kada moj inicijalni feed ubacim u neki RSS reader sve je OK, kada isto uradim sa feedom iz Feedburnera, haos sa nasim karakterima. Kada odem na panel Feedburnera na Troubleshootize, javlja mi gresku: Citat:
Evo code iz /wp_includes/feed-rss2.php (kako mi je po defaultu RSS2) koji pretpostavljam da pravi problem PHP kôd:
PHP kôd:
Interesantno mi je sto kada odem na validator W3C Feed i checkiram url inicijalnog feeda, javlja mi gresku. Kada pak uzmem code source mog generisanog xmla i checkiram ga direktnim unosom na validator kaze mi da je xml ispravan !! WTF??!! Unapred tnx. p.s. Mislim da je pitanje pocetnicko pa sam ga smestio ovde, ukoliko neko od admina misli da treba da ide na drugo mesto.. ;) |
Hm, meni je ovo prošlo:
http://feedvalidator.org/check.cgi?u...om%2FBlogowski Ima sitnih upozorenja, ali samo to? |
Da, zaboravio da kazem da kada provuces feedurnerov XML, kaze da je OK :D
Totalno strange :/ |
Kada pustim validaciju osnovnog feed-a:
http://feedvalidator.org/check.cgi?u...2Ffeed%2F#l318 prijavljuje problem sa našim slovima, tačnije velikim Š Ovo izgleda kao problem u bazi - odnosno, da naša slova nisu lepo upisana u bazu. Ako i proveriš post na koji se žali: http://www.blogowski.eu/2008/04/02/macbook-air-hacknut/ videćeš ipak da nije baš sve u redu :-) Izgleda se u migraciji nešto malo pokršilo za starije postove. |
Da, primetio sam to sa velikim slovom Š kada sam migrirao, pokusao da resim i nisam uspeo. Kapiram da je do baze (mozda i isti uzrok), ali ne nalazim izlas jebiga..
Vec razmisljam da ga skinem sa feedburnera tj. da feedburner preusmerim ka inicijalnom feedu i voilŕ..:1041: |
Nije samo veliko Š problem, problem je nevalidan izlaz iz baze - rešavaš problem na pogrešnoj strani ("zašto mi je feed nevalidan kada imam loše kodirane karaktere u bazi").
Tebi inicijalni feed ne valja, dok Feedburner markira problematične karatktere. Uostalom, provuci oba feed-a (Feedburner, inicijalni) kroz http://feedvalidator.org/ pa izvedi zaključke :) |
Ima osim tog SH ima josh jedna kombinacija. Kad se iz http://www.blogowski.eu/feed/ ukloni to, dobije se validan fajl koji kroz feedburner izgleda ovako:
http://feeds.feedburner.com/BlogWS1111 scripta za fix ovoga: <?php $buf = file_get_contents("blogowski-feed.xml"); $buf = str_replace("\xc5\x20","Š", $buf); $buf = str_replace("\xc3\x20","", $buf); file_put_contents("blogowski-feed-2.xml", $buf); \xc3\x20 nemam pojma shta bi moglo da bude neki apostrof ili tako neshto... probaj export baza, pa kroz ovu scriptu pa import... :1094: |
Citat:
|
Dumpujes bazu u text fajl i prepravi zstevin primer da ucitava taj fajl, zatim import izmenjenog fajla (preporucujem u drugu bazu i switchovanje konfiguracije na tu drugu bazu, kako bi bio siguran da to radi). Budi siguran da je sve UTF-8 (baza, konekcija ka bazi).
|
Još jedno zanimljivo rešenje, nisam doduše uspeo na brzaka da nadjem nešto slično što bi moglo kao workaround da se stavi u generator rss feeda i da fixne problem, ali mislim da bi ovo isto rešilo problem sa bazom. Naravno export i import mogu da naprave stvari još gorima, jer mysql ima encoding u bazi, encoding na klientu (linku) i on ume da konvertuje izmedju :)))
Fix za invalid utf-8 karaktere uz pomoć iconv-a: cat blogowski-feed.xml | iconv -c -f UTF-8 -t UTF-8 - > blogowski-feed-2.xml (dakle umesto blogowski-feed.xml i -2 stavi ulazni dump i izlazni fajl, pa probaj u novu mysql bazu da ubaciš da vidiš da li postoji problem.) PS: ovo neće srediti slovo Š :( |
Vreme je GMT +2. Trenutno vreme je 02:12. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.