Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: RTF - kodowanie
Forum PHP.pl > Forum > PHP
wucxxl
Witam


Mam następujący problem.
Podczas wstawiania tekstu do pliku RTF polskie znaki gubią kodowanie. Dane wstawiane do pliku pochodzą za bazy danych MySQL. Kodowanie bazy jest ustawione na UTF-8, tak samo kodowanie pliku oraz serwera. Do stworzonej pliku korzystam z następującej metody. Mam gotowy szablon pliku w który są po wstawiane znaczniki. Następnie skrypt otwiera plik RTF za pomocą fopen(), a do zamiany znaczników stosowania jest funkcja str_replace.

Nagłówek rtf-a

Kod
{\rtf1\ansi\deff1\adeflang1025
   {\fonttbl{\f0\froman\fprq2\fcharset0 DejaVu Sans;}{\f1\froman\fprq2\fcharset238 Times New Roman CE;}{\f2\fnil\fprq0\fcharset0 Times{\*\falt Times New Roman};}{\f3\fnil\fprq0\fcharset0 Helvetica;}{\f4\froman\fprq2\fcharset238 Times New Roman CE;}{\f5\fnil\fprq2\fcharset0 DejaVu Sans;}}
   {\colortbl;\red0\green0\blue0;\red128\green128\blue128;}
   {\stylesheet{\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1045\ltrch\dbch\af1\langfe1045\hich\f1\fs24\lang1045\loch\f1\fs24\lang1045\snext1 Normal;}
   {\s2\sb240\sa120\keepn\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af5\afs28\lang1045\ltrch\dbch\af5\langfe1045\hich\f3\fs28\lang1045\loch\f3\fs28\lang1045\sbasedon1\snext3 header;}
.radex
tu musi być Twój błąd. Ale z bazą danych są rzeczywiście problemy. Nie liczy się to, czy baza jest UTF-8, tylko czy dane zostały wprowadzone do bazy danych poprzez stronę o kodowaniu UTF-8. No i lepiej, aby to nie było poprzez phpmyadmina, bo on ma strasznie popaprane kodowanie.
Czadus
mam błąd natury takiej, że mimo kodowania znaków w UTF-8 i próby przekodowania ich jakikolwiek inny format nie dają rezultatu. Plik rtf zawiera krzaki. Jak przekodować tekst w UTF-8 aby w rtf był on poprawny??
erix
http://pl.wikipedia.org/wiki/RTF winksmiley.jpg

Cytat
RTF posługuje się zestawami znaków ANSI

Kod
{\rtf1\ansi\

Spróbuj przekodować krzaki ze skryptu na CP 1250.
Czadus
Dodawając do pliku rtf kolejne teksty, konwertowałem je za pomocą iconv na postać windows-1250. Też nie pomogło. Zauważyłem jednak pewną rzecz. Kiedy zapisałem sobie plik w wordpadzie i sprawdziłem kodowanie pliku za pomocą gżegżółki, to nie mógl on podać, jakie jest. Natomiast ten generowany przez mój skrypt, miał kodowanie UTF-8. Może tekst dodaję poprawnie, a końcowy plik przed wysłaniem do przeglądarki należy jeszcze jakoś przekodować??
pinochet
A czy jak wpisujesz tekst do pliku plain text jest dobrze?
  1. SET charset=UTF8

Sprawdź też:
Czy w BD są poprawne znaki ...
Czy jest ustawione odpowiednie kodowanie (BD)...
Czy pliki skryptu(php) i plik RTF są w UTF-8
erix
PS. A nie lepiej byłoby po prostu wygenerować RTF-a zamiast się z nim tak bawić?

http://www.phpclasses.org/browse/package/1805.html
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.