HTML Generierung aus php5 mit UTF-8 Codierung

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

HTML Generierung aus php5 mit UTF-8 Codierung

Postby muecke06 » 10. May 2005 14:01

Hallo zusammen,

ich habe ein kleines Problem.
Ich bin dabei auf dem eigenem Webserver in der Firma eine neue Internetpräsenz in verschiedenen Sprachen aufzubauen.
Problem ist das, dass ich neben der deutschen und anderen Sprachen auch das russische (kyrillisch) einbauen muß.
Datenbank und Tabellen in verschiedenen Kollationen mit entsprechenden Texten sind erstellt. Metaangaben (Zeichensatz) für die generierten HTML Seiten kommen auch aus der Datenbank.

Im Russischen habe ich nun das Problem, das in meiner generierten HTML-Seite statt des russischen Textes nur Fragezeichen angezeigt werden. Dies liegt daran, das der php Interpreter des Apaches bei dieser Generierung die Codierung (als standard) "ANSI" verwendet.

Würde er mit UTF-8 Codierung arbeiten, würde meine Seite auch richtig angezeigt werden.

Getestet habe ich dies mit dem Quelltext der falsch generierten Seite, indem ich die Fragezeichen mit russichem text ausgetauscht habe und die Seite neu als html mit der Codierung UTF-8 abgespeichert habe. Der IE zeigt nun alles korrekt an.

Kann mir jemand sagen an welcher Stelle (Datei und Pfad) ich dies in der Konfiguration des Apachen ändern kann, damit die HtML-Seite in UTF-8 kodiert wird?

für alle Antworten schon jetzt vielen Dank.

die muecke
muecke06
 
Posts: 9
Joined: 10. May 2005 13:35

Postby DJ DHG » 11. May 2005 00:15

Moin Moin

Vielleicht hilft das?
http://httpd.apache.org/docs-2.0/mod/co ... ultcharset

mfg DJ DHG
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel

Postby muecke06 » 11. May 2005 09:20

Servus,

Danke für deinenTip, nur leider bin ich da auch nicht richtig voran gekommen.

Habe in der httpd5.conf den Eintrag:
"AddDefaultCharset ISO-8859-1"
auf
"AddDefaultCharset utf-8"
geändert

Dies war leider nicht die Lösung.
In anderen Konfigurationsdateien konnte ich keine Einträge in Bezug auf AddDefaultCharset finden.

Wenn ich mir die phpinfo() im xampp anschaue, dann steht dort unter "Configuration PHP Core" bei
default_charset: no value

Diese Angabe sollte doch irgendwo zu administrieren sein - nur wo ... :-(

Damit könnte es eventuell zusammenhängen.
Ich bitte um weitere Vorschläge.

LG die muecke
muecke06
 
Posts: 9
Joined: 10. May 2005 13:35

Postby Wiedmann » 11. May 2005 09:26

Habe in der httpd5.conf den Eintrag:

Man sollte auch die richtige nehmen:
\xampp\apache\conf\httpd.conf

BTW:
Diesen dummerweise vorhanden Eintrage sollte man am besten gleich löschen anstatt ihn zu ändern.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby muecke06 » 11. May 2005 09:33

Dann sag mir doch bitte in welcher Zeile dieser Eintrag zu finden sein soll, denn ich habe auch diese Datei durchsucht und nichts passendes zu einem Zeichensatzeintrag gefunden.

mfg
die muecke
muecke06
 
Posts: 9
Joined: 10. May 2005 13:35

Postby Wiedmann » 11. May 2005 10:39

[quoteDann sag mir doch bitte in welcher Zeile dieser Eintrag zu finden sein soll, ...[/quote]
:?:
Du hast die Zeile ja schon gefunden. Nur in der falschen Datei. Und dann sollst du diese Zeile nicht ändern, sondern einfach löschen (oder ein "#" vorne hin machen).
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby muecke06 » 11. May 2005 10:52

Sorry, aber einen solchen oder ähnlichen Eintrag wie:
"AddDefaultCharset ISO-8859-1"
kann ich beim besten Willen in der
\xampp\apache\conf\httpd.conf
nicht finden.

Ich muß dazu sagen das ich den Apachen nicht von Anfang an konfiguriert habe. Vielleicht ist der Eintrag bei einen meiner Vorgänger abhanden gekommen ;-(.

Wenn dieser Eintrag in dieser Datei enthalten sein sollte, dann bräuchte ich mal eine Original-conf-Datei, das ich vergleichen kann.

Wenn diese jemand hat, dann bitte per Mail an: muecke06@freenet.de

lg die muecke
muecke06
 
Posts: 9
Joined: 10. May 2005 13:35

Postby deepsurfer » 12. May 2005 08:22

weisst du den welche XAMPP version der "Vorgänger" eingebaut hat ?

Ansonsten einfach dir den XAMPP neu downloaden, brauchst ihn ja nicht auf dem Server zu installieren, dann die httpd.conf auf dem Server mit der httpd.conf von downgeloadeten-xampp abgleichen und schon ist dein problem dahingehend gelöst.

Was aber noch hinzukommt ist, das dadurch du die Zeile nicht findest, der Lösungsvorschlag von Wiedmann eigentlich schon erfüllt ist.

So wie es aber den anschein hat, hat der "Vorgänger" einiges schon umgestellt und eventuell ergänzt.
möglicherweise benutzt dieser sogar einige "include" Anweisungen die dann wiederrum etliches umbiegen.

Ich mein das jetzt nicht böse, aber wie du hoffentlich nachvollziehen kannst, ist es auf anhieb nicht möglich Dir direkt zu helfen ohne zu wissen was womöglich alles an configs vorhanden sind.
Bist du dir denn auch sicher das der XAMPP als Webserver operiert oder hat der "Vorgänger" möglicherweise noch etwas anderes im System laufen.

Fragen über Fragen, Vernutungen über Vermutungen, aber ohne klares Wissen darüber wie euer Server arbeitet ist es schwer hilfe zu geben.
Wir beziehen uns hiermit auf ein laufenden XAMPP, dieser hat vordefinierte Verzeichnise. Es kann durchaus sein das der XAMPP bei euch nur mal so installiert wurde und der eigentliche server woanders ist.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby muecke06 » 12. May 2005 09:11

Hi deepsurfer,

zu1: XAMPP 1.4.12 mit PHP 5.0.3 und SQL4.1

in meiner Meinung nach der neueste.

Der Websurfer funktioniert tadellos und er arbeitet auch als solcher. Es sind auch alle Teilbreiche (FTP, SSL usw.) installiert welche auch funktinieren und genutzt werden. Was nicht aktiv ist ist SSI. Brauch ich auch nicht.

Falls es diesen "Charset" Eintrag in der originalen httpd.conf einmal gegeben hat, dann müßte ich nur wissen an welcher Stelle dieser stand.
Wenn mir jemand mal so ein bischen Code hier einkopieren könnte von dieser originalen Datei (mit diesem Eintag) wäre mir schon geholfen.
Dann kann ich abgleichen.

Danke

mfg die muecke
muecke06
 
Posts: 9
Joined: 10. May 2005 13:35

Postby deepsurfer » 12. May 2005 09:33

ok...damit du dir auch den originalen XAMPP 1.4.12 holen kannst
http://sourceforge.net/project/showfile ... p_id=61776
sehr weit nach unten scrollen !

Im Originalen liegt das hier ab Zeile 755
Code: Select all
# Specify a default charset for all pages sent out. This is
# always a good idea and opens the door for future internationalisation
# of your web site, should you ever want it. Specifying it as
# a default does little harm; as the standard dictates that a page
# is in iso-8859-1 (latin1) unless specified otherwise i.e. you
# are merely stating the obvious. There are also some security
# reasons in browsers, related to javascript and URL parsing
# which encourage you to always set a default char set.
#
AddDefaultCharset ISO-8859-1

#
# Commonly used filename extensions to character sets. You probably
# want to avoid clashes with the language extensions, unless you
# are good at carefully testing your setup after each change.
# See ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets for
# the official list of charset names and their respective RFCs
#
AddCharset ISO-8859-1  .iso8859-1 .latin1
AddCharset ISO-8859-2  .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3  .iso8859-3 .latin3
AddCharset ISO-8859-4  .iso8859-4 .latin4
AddCharset ISO-8859-5  .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6  .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7  .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8  .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9  .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5        .Big5       .big5
# For russian, more than one charset is used (depends on client, mostly):
AddCharset WINDOWS-1251 .cp-1251   .win-1251
AddCharset CP866       .cp866
AddCharset KOI8-r      .koi8-r .koi8-ru
AddCharset KOI8-ru     .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8       .utf8

# The set below does not map to a specific (iso) standard
# but works on a fairly wide range of browsers. Note that
# capitalization actually matters (it should not, but it
# does for some browsers).
#
# See ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets
# for a list of sorts. But browsers support few.
#
AddCharset GB2312      .gb2312 .gb
AddCharset utf-7       .utf7
AddCharset utf-8       .utf8
AddCharset big5        .big5 .b5
AddCharset EUC-TW      .euc-tw
AddCharset EUC-JP      .euc-jp
AddCharset EUC-KR      .euc-kr
AddCharset shift_jis   .sjis


Da ich aber nicht weiss was der "Vorgänger" noch alles hinausgeschmissen hat, hier erstmal ein hinweis wo es gew
Code: Select all
esen war nach:
#
# ForceLanguagePriority allows you to serve a result page rather than
# MULTIPLE CHOICES (Prefer) [in case of a tie] or NOT ACCEPTABLE (Fallback)
# [in case no accepted languages matched the available variants]
#
# ForceLanguagePriority Prefer Fallback


Ansonsten oberhalb von
Code: Select all
#

<IfModule mod_negotiation.c>
<IfModule mod_include.c>
    Alias /error/ "/xampp/apache/error/"
...
...
...
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby muecke06 » 12. May 2005 10:57

Hi,

die Zeile habe ich gefunden, die Einträge sind bei mir genauso, allerdinks in der httpd5.conf und nicht in der httpd.conf, so wie es wiedmann wollte.

die httpd.conf hat bei nur etwas über 400 zeilen.

Wer liegt jetzt falsch, ihr oder ich?

mfg die muecke
muecke06
 
Posts: 9
Joined: 10. May 2005 13:35

Postby deepsurfer » 12. May 2005 11:36

der "Vorgänger" hat bevor er eine fertige httpd.conf benutzt einige male die httpd.conf gegengespeichert und diese mit Nummern versehen.

Daher heisst die bei dir auch httpd5.conf.
Diese wird aber von XAMPP-Apache nicht berücksichtigt.

XAMPP-Apache benutzt die httpd.conf

Schlussfolgerung:
Der "Vorgänger" hat des öfteren die httpd.conf geändert, wie es aber richtig ist, hat er vor dem Editieren erstmal ein backup der datei gemacht.
Code: Select all
cp httpd.conf httpd12345.conf.


Sollte nach dem editieren seine Änderungen nicht funktionieren hat er immer eine Funtkionierende Sicherung im hinterhalt.

Das du eine httpd5.conf siehst liegt schlicht und ergreifend darin das der "Vorgänger" alle anderen Versionen bis auf diese gelöscht hatte.

Das deine jetzige httpd.conf nun um einige hundert zeilen kürzer ist, liegt schlicht und ergreifend daran das der "Vorgänger" diese httpd.conf als lauffähiges objekt ansieht und alles drumherum gelöscht hat.

So, nun schätze ich das du mit dieser Erklärung etwas anfangen kannst.

Ich würde dir unbedingt raten mal (link hatte ich ja schon gepostet) die gleiche XAMPP-version herunter zu laden und aus dieser heruntergeladenen Version die httpd.conf mit der httpd.conf vom laufenden Server zu vergleichen.

Hausaufgabe:
- XAMPP Version downloaden (ZIP version)
aus dieser ZIPversion die httpd.conf auf Festplatte in ein Verzeichnis deiner Wahl ablegen und diese dann httpd.conf-orig umbenennen,

Die httpd.conf vom laufenden Server zusätzlich in dieses Verzeichnis auf deiner Festplatte kopieren.
Nun noch eine Kopie der httpd.conf vom laufenden Server machen (wie der "Vorgänger" es ja auch getan hat) und schon bist du auf der sicheren seite.

Jetzt kannst du beide conf auf der Festplatte vergleichen (gibt dafür jede menge kleine Tools, ansonsten zwei WRITE fenster benutzen).

Hier ein LINK womit dir die config des Apachen auf Deutsch erklärt wird.
http://aktuell.de.selfhtml.org/artikel/ ... conf12.htm

Ich denke mir das du damit zumindest einiges besser verstehen wirst.

Sei mir bitte nicht böse, wenn ich dich zu dieser Tat bringe, denn im grunde geht es darum das du nicht weisst was der "Vorgänger" so gemacht hat, aber ohne ein kleines Wissen wie es ungefähr funktioniert ist eine Hilfe schwer möglich, da ich (wir hier im forum) dir etwas sagen und Du den zusammenhangt nicht hast und es dadurch immer wieder zu missverständnissen kommen wird.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby Wiedmann » 12. May 2005 12:24

XAMPP-Apache benutzt die httpd.conf

Korrekt.

der "Vorgänger" hat bevor er eine fertige httpd.conf benutzt einige male die httpd.conf gegengespeichert und diese mit Nummern versehen.

Daher heisst die bei dir auch httpd5.conf.
Diese wird aber von XAMPP-Apache nicht berücksichtigt.

Nein. Die Datei "httpd5.conf" liegt im Verzeichnis "\xampp\php" und wird vom PHP-Switch benutzt.

Benutzen tut der Apache zur Laufzeit aber trotzdem die Datei "httpd.conf" im Verzeichnis "\xampp\apache\conf".
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby muecke06 » 12. May 2005 12:30

Hi Deep,

Danke für deinen ausführlichen Bericht.

aber die Datei httpd5.conf von ich rede liegt nicht im selben Ordner wie die httpd.conf.

\xampp\apache\conf\http.conf

und

\xampp\php\httpd5.conf

Da es sich hier um eine Konfiguration im php-Modul handelt, habe ich vermutet das es diese datei sein müßte wo die Einstellungen gemacht werden sollten (siehe Thread ganz oben).

Ich habe nur von diesen Beiden Dateien gesprochen und bin auch eigentlich fest der Meinung das es sich hier nicht um eine Sicherungskopie handelt. Vergleich doch bitte mal bei dir.

Noch einmal:

Diese benannten CHARSET Angaben sind nur in der httpd5.conf im Ordner php zu finden, aber in der Datei httpd.conf im Ordner apache\conf nicht.

Ist dies bei dir auch so?

wenn ich mir die phpinfo im XAMPP anschaue sind dort unter PHP Core CHARSET-Angaben. Diese wollte ich ändern.

Gruß die muecke
muecke06
 
Posts: 9
Joined: 10. May 2005 13:35

Re: HTML Generierung aus php5 mit UTF-8 Codierung

Postby chrisb » 19. May 2005 06:44

muecke06 wrote:Kann mir jemand sagen an welcher Stelle (Datei und Pfad) ich dies in der Konfiguration des Apachen ändern kann, damit die HtML-Seite in UTF-8 kodiert wird?


Hallo,
... andere Variante, wenn Du nur PHP-generierte Seiten verwendest (d.h. Du musst die Konfiguration des Apache nicht ändern):

<?php
$header = "Content-Type: text/html; charset=UTF-8";
header($header);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php
$metaContentType=<<<HEREDOC
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
HEREDOC;
echo ($metaContentType . "\r\n");
?>

D.h. so kannst Du sowohl den HTTP-Header, als auch den Contenttype der HTML-Seite steuern.

Warum so "kompliziert?" - Ich hatte mal diverse Versuche gemacht und bin draufgekommen, dass manche Browser den HTTP-Header ignorieren, wenn im HTML-Contenttype was anderes drinsteht bzw. umgekehrt. Test ergaben, dass obige Variante bei (hoffentlich!) allen halbwegs modernen Browsern funktioniert.

Und wenn Du Formulare verwendest, solltest Du (zur Sicherheit!) auch noch

<form action="irgendwas.php" method="POST" accept-charset="utf-8" enctype="multipart/form-data">
bzw.
... method="GET" ...
verwenden.

C.
chrisb
 
Posts: 7
Joined: 06. May 2005 11:51

Next

Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 10 guests