php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.01.2007, 22:35  
Erfahrener Benutzer
 
Registriert seit: 26.05.2008
Beiträge: 200
PHP-Kenntnisse:
Fortgeschritten
[-UFO-]Melkor befindet sich auf einem aufstrebenden Ast
Standard UTF-8 Darstellung

Ich habe ein kleines Testskript geschrieben, da ich meine Seite künftig alle auf UTF-8 umstellen möchte:

Edit: Weiter unten die aktualisierte Version des Quellcodes.
PHP-Code:
<?php
header
("content-type=text/html; charset=utf-8");
echo 
'<?xml version="1.0" encoding="UTF-8" ?>';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
$str 
urldecode('%83');
echo 
mb_convert_encoding($str'UTF-8').'
'
;
echo 
mb_detect_encoding(mb_convert_encoding($str'UTF-8')).'
'
;
?>
</body>
</html>
Die Ausgabe von $str ist leider entweder ein kleines Rechteck [ƒ sollte angezeigt werden] (IE, Opera) oder einfach eine leere Zeile (Firefox). Dabei ist der Charset in allen Browsern auf UTF-8 gestellt und die Ausgabe von mb_detect_encoding ergibt auch UTF-8.
[-UFO-]Melkor ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.01.2007, 22:44  
CIX88
Gast
 
Beiträge: n/a
Standard

Hmmm, muss man überhaupt einen zusätzlichen Header senden, wenn Content-Type schon gesetzt ist ?
*doppelt gemoppelt*
 
Alt 24.01.2007, 22:53  
Erfahrener Benutzer
 
Registriert seit: 26.05.2008
Beiträge: 200
PHP-Kenntnisse:
Fortgeschritten
[-UFO-]Melkor befindet sich auf einem aufstrebenden Ast
Standard

Hatte ich hier irgendwo im Forum gelesen, aber macht auch keinen Unterschied, wenn man einen weglässt.
__________________
Programming PHP
[-UFO-]Melkor ist offline  
Alt 24.01.2007, 23:29  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

1) der Header sollte so aussehen:

Code:
Content-Type: text/html; charset=UTF-8
2)
Code:
<?xml version="1.0" encoding="UTF-8" ?>
mag der IE nicht und wechselt in den Quirks-Modus

3) xhtml 1.1 solltest du nicht als text/html ausgeben
-> http://www.w3.org/TR/xhtml-media-types/#summary-table
dann kommt allerdings der IE auch wieder nicht mit klar, im endeffekt sollte man sich ne Browserweiche basteln:

PHP-Code:
        if ( stristr($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml') )
        {
          
header('Content-type: application/xhtml+xml; charset=UTF-8');
        }
        else
        {
          
header('Content-type: text/html; charset=UTF-8');
        } 
und dann im template halt noch das mit dem <?xml anpassen
robo47 ist offline  
Alt 24.01.2007, 23:39  
Erfahrener Benutzer
 
Registriert seit: 26.05.2008
Beiträge: 200
PHP-Kenntnisse:
Fortgeschritten
[-UFO-]Melkor befindet sich auf einem aufstrebenden Ast
Standard

Habe das ganze mal überarbeitet
PHP-Code:
<?php
if(
    
stristr($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml')
){
    
header('Content-Type: application/xhtml+xml; charset=UTF-8');
    echo 
'<?xml version="1.0" encoding="UTF-8" ?>';

else{
    
header("Content-Type: text/html; charset=UTF-8");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
    <?php
    
if(
        
stristr($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml')
    ){
        echo 
'<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />';
    } 
    else{
        echo 
'<meta http-equiv="content-type" content="text/html; charset=UTF-8" />';
    }
    
?>
</head>
<body>
<?php
$str 
urldecode('%83');
echo 
mb_convert_encoding($str'UTF-8').'
'
;
echo 
mb_detect_encoding(mb_convert_encoding($str'UTF-8')).'
'
;
?>
</body>
</html>
Mein Problem mit dem Quirks-Mode ist jetzt zwar weg, aber an dem UTF-8 Problem hat es nix geändert^^
__________________
Programming PHP
[-UFO-]Melkor ist offline  
Alt 24.01.2007, 23:48  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

was stellt denn die %83 dar ?

mit meinem kleinen Testcode:

PHP-Code:
for($i $i 100 $i++)
{
    echo 
$i.') '.urldecode('%'.$i).'
'
;

kommt da nämlich auch so mehr oder minder nur mist raus, unabhängig von utf8
robo47 ist offline  
Alt 25.01.2007, 00:23  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Wenn du die Datei als UTF-8 auslieferst, sollte der Editor die Datei auch im UTF-8-Format ausgeben (was bei dir nicht relevant zu sein scheint, weil keine UTF-8-Zeichen > 128 vorkommen.

Aber wenn die fixen Texte richtig reinspeichert und die Datenbank auch UTF-8 ist, brauchst du garnichts mehr konvertieren.
Zergling-new ist offline  
Alt 25.01.2007, 17:17  
Erfahrener Benutzer
 
Registriert seit: 26.05.2008
Beiträge: 200
PHP-Kenntnisse:
Fortgeschritten
[-UFO-]Melkor befindet sich auf einem aufstrebenden Ast
Standard

%83 stellt folgendes Zeichen dar (bzw. soll darstellen^^): ƒ

@Zergling: Ich weiß nicht, ob ich das ganz verstehe, was du sagst. Aber ich greife auf externe Textdateien zu, aus denen ich Daten lade. Und die sind anscheinend nicht in UTF-8 codiert.

Edit sagt: Liegt es eventuell am Editor? Nutze HAPedit unter Windows XP.
[-UFO-]Melkor ist offline  
Alt 25.01.2007, 18:32  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Externe Datenquellen sind etwas anderes. In welchem Format sind die denn gespeichert?

Eventuell auch hilfreich, wenn du den Zeichensatz kennst:
http://de.php.net/manual/de/function.iconv.php
Zergling-new ist offline  
Alt 25.01.2007, 19:10  
Erfahrener Benutzer
 
Registriert seit: 26.05.2008
Beiträge: 200
PHP-Kenntnisse:
Fortgeschritten
[-UFO-]Melkor befindet sich auf einem aufstrebenden Ast
Standard

Die Zeichen sind ja alle urlencoded. Wenn ich mb_detect_encoding() anwende (das ist doch die passende Funktion dafür, oder?) kommt ASCII raus.

//Edit sagt: Von iconv() war ich damals wegen solcher Fehlermeldungen weggegangen:
Code:
Notice: iconv() [function.iconv]: Detected illegal character in input string in C:\Apache\xampp\htdocs\dk\6.0\loaddata.php on line 121
//Edit2 sagt:
Vllt. auch ganz interessant: Kopiere ich diese 4-Ecke in phpBB und schicke sie ab, werden sie wieder passend ausgegeben:

Code:
ƒƒƒ
$chn€€ !M $OoMm€r
BurgvânîLléFrü©hTê†ées Burg
.:†_ThE_FiVe_PoInTs_†:.
[-UFO-]Melkor ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Firefox = richtige Darstellung;IE = falsche Darstellung why? Kori HTML, Usability und Barrierefreiheit 4 11.05.2006 12:29
'falsche darstellung' HTML, Usability und Barrierefreiheit 2 24.04.2006 16:33
Darstellung von Sonderzeichen seven-12 PHP Tipps 2006 3 01.03.2006 15:28
Darstellung 2 Dropdowns mit gegenseitiger Aktualisierung HTML, Usability und Barrierefreiheit 6 19.01.2006 17:07
readfile() zur Darstellung von Bildern? becks123 PHP-Fortgeschrittene 4 23.12.2005 11:30
Bild Darstellung GSJLink PHP Tipps 2005-2 3 26.10.2005 20:02
Probleme mit der darstellung HTML, Usability und Barrierefreiheit 0 25.10.2005 10:03
Komisches Problem bei der Darstellung PHP Tipps 2005-2 4 25.07.2005 11:15
Darstellung Formular innerhalb Tabelle saibot HTML, Usability und Barrierefreiheit 4 24.07.2005 20:35
prob beim löschen von datensätzen und der darstellung danach PHP Tipps 2005-2 4 17.07.2005 21:42
Falsche Darstellung in Firefox und Problem mit Div größe HTML, Usability und Barrierefreiheit 7 14.07.2005 16:40
darstellung mit tabellen skydreamboy PHP Tipps 2005-2 18 09.07.2005 00:31
IE falsche darstellung von border eigenschaften HTML, Usability und Barrierefreiheit 1 20.06.2005 11:50
Darstellung mathematischer Ausdrücke in phpbb PHP Tipps 2005 27 20.04.2005 14:49
MYSQL Darstellung in PHP PHP Tipps 2005 2 03.04.2005 22:54

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
utf 8 darstellung, php iconv löscht, bild mit quirks utf-8 umwandeln, detected an illegal character in input string umlaute, php iconv mb_convert_encoding unterschied, charset=utf-8 falsche darstellung ie, mb_convert_encoding löscht umlaute, utf-8 html \leere zeile\, php mb_convert_encoding iconv unterschied

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.