PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit UTF-8 und IE



undefined
12-07-2006, 14:13
Ich lese aus einer Datenbank Textpassagen und übergebe diese dem XSLTProzessor. Dabei Konvertiere ich den Text mit php:rawurlencode().
Bei einem Klick auf den Link wird der div Layer angezeigt und mit dem Text gefüllt. Mit Opera/Konqueror und allen Moz Browsern habe ich keine Probleme.
Außer IE, der kann den Zeichnsatz nicht Darstellen und macht die üblichen Fehlerdarstellungen. Gibt es eine Möglichkeit das dem IE bei zu bringen?


<xsl:template match="texte" mode="preview">
<xsl:param name="title" />
<a>
<xsl:attribute name="href">
<xsl:text>javascript:PreviewNews('</xsl:text>
<xsl:value-of select="." />
<xsl:text>');</xsl:text>
</xsl:attribute>
<xsl:attribute name="type">
<xsl:text>text/javascript</xsl:text>
</xsl:attribute>
<xsl:attribute name="title">
<xsl:text>Anlesen</xsl:text>
</xsl:attribute>
<xsl:value-of select="$title" />
</a>
</xsl:template>



function PreviewNews(i)
{
var div = document.getElementById('PreviewLayer');
div.setAttribute( 'title', 'Schließen' );
div.style.cursor = 'pointer';
div.innerHTML = '';
if ( div.style.display == 'none' )
SwapDisplay('PreviewLayer');

div.appendChild( document.createTextNode( decodeURI(i) + '...' ) );
var u = document.createElement( 'u' );
u.setAttributeNode( document.createAttribute( 'style' ) );
u.style.color = 'blue';
u.appendChild( document.createTextNode( 'Schließen' ) );
div.appendChild( document.createElement( 'br' ) );
div.appendChild(u);

div.onclick = function() {
div.style.display = 'none';
}
}

Waxolunist
12-07-2006, 14:54
Bin in php nicht so bewandert. Aber hast du schon mal versucht den content-type explizit zu setzen.

Bei Jsps machen wir das so.

response.setContentType("text/html;charset=UTF-8");

undefined
12-07-2006, 15:25
Content Type ist gesetzt. Das Problem taucht auch nur bei Javascript auf.
PS: Bei Ansicht/Codierung auf Automatisch gestellt wählt er auch UTF-8 aus.

fabter
18-07-2006, 16:26
Hi undefined,

das gleiche Problem hatte ich gestern auch. Ich habe dann die Content Type Angabe komplett weggelassen, dann hat es funktioniert. Anders leider nicht. Vielleicht hilft es bei Dir ja auch.

undefined
19-07-2006, 13:33
Hat sich erledigt, das ist ein Bug in IE und Opera ( Opera unter Linux das gleiche Problem).
Alle anderen Interpretieren ein Javascript genauso wie der Content-Type des Dokumentes worauf es verweist.
Ich habe es jetzt mit einer USER_AGENT abfrage gelöst.
Das Problem tritt nur dann auf wenn man ein String mit unescape wieder Decodiert der zuvor mit php rawurlencode codiert wurde. Der XSLTProzessor behandelt diesen String als ASCII und Konvertiert ihn auch Logischerweise nicht.