Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z kodowaniem UTF-8 w RSS
depz55
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 8.01.2009

Ostrzeżenie: (0%)
-----


Męczę się ostatnio z kodowaniem UTF-8 w generowanym pliku RSS w php.

Mam:
  1. <?php header('Content-type: text/xml'); ?>
  2. <?php echo '<?xml version="1.0" encoding="UTF-8" ?>'; ?>


potem, np. title:
  1. <item>
  2. <title> $result['tytul']; ?></title>



W bazie mam UTF-8.

Kiedy uruchamiam ten plik PHP w przeglądarce, na serwie, kanał RSS nie wykonuje błędów, ale nic nie wyświetla. Sprawdzając źródło dowiaduję się, że wszystko gra i jest ładnie wczytywane z bazy, z tym, że np. Firefox podkreśla UTF-8'owe zapisy, na żółto, np. & quot;

Normalnie, moja strona również leci z UTF-8 i charset html mam utf-8 i jest ok. Kiedy klikam źródło, też zanki są w stylu: & quot;, ale w RSS znaki specjalne UTF-8 są brane w FF jako błędne i FF nie renderuje RSS'a. Po usunięciu tych znaków jest ok, ale albo nie mam polskich liter, albo tam gdzie miały być polskie litery nie ma żadnej.

Na PHP forum jest iso-8859-2 na stronie, w bazie i w RSS iso-8859-2. Jeśli miałbym bazę w iso-8859-2, to nie byłby problem. Ale w UTF-8 już jest.

Czy to czytnik RSS FF jest głupi czy ja?(IMG:style_emoticons/default/tongue.gif) Pomimo, że to jest pytanie dodatkowe, bardzo proszę o odpowiedź na to najważniejsze: Jak sobie z tym poradzić?(IMG:style_emoticons/default/smile.gif)


PS. macie dosć dziwny edytor tych postow. Nic nie moglem wyedytowac, nie widac gdzie jest kursor, klikniecie w srodku tekstu nie powoduje przejscie do tego miejsca. Jak wy sobie z tym radzicie?:/

W szybkiej odpowiedzi jest ok. Gorzej z nowym postem i pełnej edycji wiadomości.

Ten post edytował depz55 29.01.2010, 04:06:50
Go to the top of the page
+Quote Post
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Problem zapewne nie leży w samym kodowaniu jako takim, tylko tym jak wygląda tekst po konwersji. Ogólnie dane w kanale RSS typu tekstowego nie powinny być interpretowane przez czytnik. Niestety problem opisany przez Ciebie występuje właśnie gdy w tekście wyświetlają się pewne encje inne niż standardowe gt, lt. Wtedy należy dodatkowo całość zawartości "niepewnego tagu" ująć w znacznik CDATA by zadziałało.

EDIT: Problem ten tyczy tylko najnowszego Firefoxa. Opera i IE działają dobrze. IMHO to problem wynikły z zastosowania nowego silnika JS, ale to tylko moje przypuszczenie.

Ten post edytował thek 29.01.2010, 10:22:47
Go to the top of the page
+Quote Post
depz55
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 8.01.2009

Ostrzeżenie: (0%)
-----


Mam już w CDATA,
<title><![CDATA[Tre��]]></title>

Z tym, że teraz są pojedyncze: & ndash;
i � zamiast polskich znaków

tekst na FF3 nadal się nie renderuje, w źródle, to co w CData jest na różowo (cały wpis).

Skoro kodowanie w bazie jest UTF-8, RSS jest UTF-8, to skąd �?
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Choćby stąd, że plik może mieć inne kodowanie wewnętrzne niż utf8. Plik może być bowiem wewnątrz inny format, choćby ASCII. Wtedy będą problemy.
Go to the top of the page
+Quote Post
depz55
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 8.01.2009

Ostrzeżenie: (0%)
-----


Dziękuję za pomoc. W VS zapisałem plik jako UTF8, miałem kodowanie Windows + w kodzie SET NAMES utf-8, może komuś się przyda. Niedopatrzenie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 12:05