DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Sva početnička pitanja (http://www.devprotalk.com/forumdisplay.php?f=40)
-   -   Encoding XMLa na WordPressu (http://www.devprotalk.com/showthread.php?t=6584)

blogowski 30. 10. 2008. 14:24

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:

The URL you entered does not appear to be a valid feed. We encountered the following problem: Error on line 317: Invalid byte 2 of 2-byte UTF-8 sequence.
Ocigledno mi je da je problem sa encodingom, ali evo vec dva dana pokusavam sve i svasta i nemam resenje. Napominjem da nema nikakvih problema sa encodingom na samom blogu nego iskljucivo na XMLu i to Feddburnerovom. Takodje, uradio sam update na poslednju verziju Wpa i sve je proslo OK, ali feed je i dalje neispravan :/

Evo code iz /wp_includes/feed-rss2.php (kako mi je po defaultu RSS2) koji pretpostavljam da pravi problem

PHP kôd:

<?php
/**
 * RSS2 Feed Template for displaying RSS2 Posts feed.
 *
 * @package WordPress
 */

header('Content-Type: text/xml; charset=' get_option('blog_charset'), true);
$more 1;
?>
<?php 
echo '<?xml version="1.0" encoding="' .get_option('blog_charset'). '"?'.'>'?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom"
    <?php do_action('rss2_ns'); ?>
>

pokusavao sam i da na «*tvrdo*» ubacim
PHP kôd:

<?xml version="1.0" encoding="utf-8"?>

ali onda mi ne radi ni inicijalni feed :(

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.. ;)

DejanVesic 30. 10. 2008. 14:37

Hm, meni je ovo prošlo:

http://feedvalidator.org/check.cgi?u...om%2FBlogowski

Ima sitnih upozorenja, ali samo to?

blogowski 30. 10. 2008. 14:39

Da, zaboravio da kazem da kada provuces feedurnerov XML, kaze da je OK :D

Totalno strange :/

DejanVesic 30. 10. 2008. 14:55

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.

blogowski 30. 10. 2008. 15:04

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:

DejanVesic 30. 10. 2008. 17:05

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 :)

zsteva 30. 10. 2008. 17:28

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:

blogowski 30. 10. 2008. 17:37

Citat:

probaj export baza, pa kroz ovu scriptu pa import...
Kako mislis kroz ovu skriptu? Sta da radim sa rtim? :) Mislis da stavim to parce u XML? Ne kapiram..

MorenoArdohain 30. 10. 2008. 17:41

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).

zsteva 30. 10. 2008. 18:51

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 10:38.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.