Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z kodowaniem UTF-8 w RSS
Forum PHP.pl > Forum > PHP
depz55
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?tongue.gif Pomimo, że to jest pytanie dodatkowe, bardzo proszę o odpowiedź na to najważniejsze: Jak sobie z tym poradzić?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.
thek
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.
depz55
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 �?
thek
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.
depz55
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 smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.