Simon: RTF Datei utf-8 codiert...

Beitrag lesen

Hallo zusammen,

ich habe eine *.rtf Vorlage in welcher Platzhalter definiert sind, wie zB. %%DATUM%%. Diese Vorlage lese ich ein und tausche die Platzhalter gegen ein paar Variablen aus. Anschließend gebe ich die Datei direkt an den Browser (download) oder zu einem Script das die Datei per E-Mail verschickt.

Das funktioniert alles auch wunderbar.
Ich habe nun die Seite auf utf-8 Codierung umgestellt und habe das Problem das in der Rich Text Datei Umlaute (wie z.B. äöü) nicht sauber dargestellt werden. Jedoch nur die Umlaute, normaler Text geht hingegen... Das gleiche Ergebnis habe ich unabhängig ob ich die Datei an den Browser gebe oder per E-Mail sende.
Beispiel: http://www.test.weltreporter.net/test/Bild.png

  
  // ******************************  
  // RTF Vorlage laden, Text einfuegen und Senden  
  $rtfVorlage = fread(fopen($vorlage, "r"), filesize($vorlage));  
  
  
  // ******************************  
  // Ersetzungen vornehmen  
  $rtfVorlage = str_replace("%%DATUM%%", $datum, $rtfVorlage);  
  $rtfVorlage = str_replace("%%TITEL%%", $titel, $rtfVorlage);  
  $rtfVorlage = str_replace("%%BEMERKUNGEN%%", $bemerkungen, $rtfVorlage);  
  // Habe die Liste mal gekürzt, da sie unwichtig ist....  
  
  switch ($ausgabe) {  
    case 'browser':  
        $dateiName = gibDateinamen();  
  
        header("Cache-control: private");  
        header("Content-Type: application/rtf");  
        header("Content-Disposition: attachment; filename=".$dateiName);  
        print $rtfVorlage;  
  
        return 0;  
        break;  
  
    case 'email':  
        return $rtfVorlage;  
        break;  
  }  

Und hier noch eine Demo RTF Vorlage:

  
{\rtf1\mac\ansicpg10000\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1031\deflangfe1031{\upr{\fonttbl{\f0\fnil\fcharset256\fprq2{\*\panose 00020206030504050203}Times New Roman;}  
{\f1\fnil\fcharset256\fprq2{\*\panose 00020b06040202020202}Arial;}}{\*\ud{\fonttbl{\f0\fnil\fcharset256\fprq2{\*\panose 00020206030504050203}Times New Roman;}{\f1\fnil\fcharset256\fprq2{\*\panose 00020b06040202020202}Arial;}}}}  
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;  
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \lang1031\langfe1031\cgrid\langnp1031\langfenp1031  
\snext0 \styrsid11221937 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\*  
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv  
\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 Normal Table;}}{\*\rsidtbl \rsid11221937}{\info{\creatim\yr2008\mo3\dy1\hr9\min30}{\revtim\yr2008\mo3\dy1\hr9\min31}  
{\version1}{\edmins0}{\nofpages1}{\nofwords0}{\nofchars0}{\nofcharsws0}{\vern24577}}\paperw11900\paperh16840\margl1417\margr1417\margt1417\margb1134  
\deftab708\ftnbj\aenddoc\hyphhotz425\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dghspace180\dgvspace180\dghorigin1701\dgvorigin1984\dghshow0\dgvshow0  
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\rsidroot16064709 \fet0\sectd  
\linex0\headery708\footery708\colsx708\endnhere\sectdefaultcl\sectrsid10818643\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang  
{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7  
\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain  
\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {\v\f1\fs18\insrsid11221937  
\par %%DATUM%%  
\par }{\b\v\f1\fs28\insrsid11221937 %%TITEL%%  
\par }{\v\f1\insrsid11221937  
\par  
\par  
\par }{\v\f1\fs18\insrsid11221937 Bemerkung:  
\par %%BEMERKUNGEN%%  
\par }{\insrsid16064709  
\par }}  

Ich möchte also gerne in der Datei die Umlaute (Sonderzeichen) richtig dargestellt bekommen. Eine Überlegung (die auch teilw. funktioniert) ist die Strings mit mb_convert_encoding() in eine andere Codierung (zB ISO-8859-15) zu wandeln. Das geht aber nur solange die Zeichen auch in ISO-8859-15 enthalten sind, was wegen UTF-8 nicht bei allen Zeichen zutrifft.

Kann mir jemand einen Tipp geben wir ich das Problem lösen kann?
Wie kann ich IN einer Rich Text Datei die Codierung angeben?

Vielen Dank

  • Simon