![]() |
Websiteumstellung auf UTF-8, wie geht's?
Hallo,
es ist wirklich grauenhaft, was alles zu tun ist, um eine Website auf UTF-8 umzustellen. Was man da alles verändern muss. Ich bekomme es jedenfalls nicht korrekt hin, denn entweder wirde es nicht alles in die Datenbank eingetragen oder es wird im Browser falsch codiert dargestellt. Die MySQL-Datenbank ist so eingestellt (diese 2 Beispiele verdeutlichen das ganz gut):
SQL-Code:
Wenn ich nun ganz gewöhnlich über die PHP-Funktionen etwas in die Datenbank einfügen (INSERT INTO ...) und auch normal wieder auslesen möchte (SELECT ... FROM ...), dann sehe ich im Browser nur diese seltsamen Zeichen, trotz UTF-8-Header, den ich mittels header() sende und in den Meta-Tags zusätzlich angegeben habe (der Internet Explorer braucht das zwingend dort).
# Datenbank
CREATE DATABASE `main` CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; # Eine der Tabellen CREATE TABLE `page_acronyms` ( `acronym_name` varchar(255) collate utf8_unicode_ci NOT NULL default '', `acronym_desc` varchar(255) collate utf8_unicode_ci NOT NULL default '', `lang` varchar(4) collate utf8_unicode_ci NOT NULL default '', PRIMARY KEY (`acronym_name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; Mir wurde dann der Tipp gegeben, zu Beginn das hier aufzurufen, was jedoch auch nicht weiterhilft, denn das schneidet mir die String ab einem Sonderzeichen einfach ab:
SQL-Code:
Es kann ja nicht sein, dass ich beim Eintragen und Auslesen immer utf8_encode() bzw. utf8_decode() verwenden muss.
SET NAMES 'utf8'
Wo liegt der Fehler? Grüße |
Re: Websiteumstellung auf UTF-8, wie geht's?
Hallo,
Zitat:
Zitat:
Gruß xaromz |
Re: Websiteumstellung auf UTF-8, wie geht's?
Zitat:
Mit welchem Zeichensatz sind deine Dateien kodiert? LG, Xong |
Re: Websiteumstellung auf UTF-8, wie geht's?
Hallo Xong,
ich war der Meinung, wenn der Browser UTF-8 vorgegeben bekommt, übergibt er die Daten auch in dem Format weiter (beispielsweise bei Formularen). Grüße |
Re: Websiteumstellung auf UTF-8, wie geht's?
Formulareingaben musst du sowieso immer überprüfen.
Du weißt nie, in welchem Encoding die Daten ankommen. Dort ist ein utf8_encode also unerlässlich. Trotzdem würde ich gerne noch wissen, mit welchem Editor / welcher IDE du deine PHP-Dateien speicherst und welche Zeichenkodierung diese haben. =) LG, Xong |
Re: Websiteumstellung auf UTF-8, wie geht's?
Hallo Xong,
ach das hast du gemeint! Ich nutze PHPEclipse und das speichert die Dateien meines Wissens im ANSI-Format ab. Ich muss das alles also doch immer manuell kodieren, ohje. :( Grüße Edit: Da ich die ganzen Strings in den Abfragen über eine eigene Funktion behandle, wäre der Aufruf von utf8_encode doch mit minimalem Aufwand verbunden, sehe ich gerade. :) Daran hatte ich gar nicht gedacht. Nur utf8_decode wäre mit größerem Aufwand verbunden. Dennoch würde mich interessieren, ob das wirklich zwingend erforderlich ist. |
Re: Websiteumstellung auf UTF-8, wie geht's?
Zitat:
Ich habe das Programm hier nicht installiert, aber wenn ich zu Hause bin, kann ich dir weiterhelfen, wenn du es bis dahin nicht schon selbst gefunden hast! Zitat:
|
Re: Websiteumstellung auf UTF-8, wie geht's?
Ich kann die Dateien natürlich als UTF-8 speichern, sehe jedoch keinen Grund dafür, da ich nicht über den ANSI-Zeichensatz hinausgehe.
|
Re: Websiteumstellung auf UTF-8, wie geht's?
Hi Matze,
wenn du UTF-8 verwenden willst, musst du auch konsequent dieses Dateifomat verwenden. Die Angabe im Header alleine bedeutet ja noch nicht, dass die Datei wirklich dieses Format hat. Du versendest also im Moment einen Mix aus ANSI und UTF-8. Das muss zwangsläufig zu Fehlern führen. Beispiel: Wenn du alles auf Unicode eingestellt hast, und in deiner (ANSI-)PHP-Datei dann schreibst
Code:
Dann sendest du ja automatisch einen ANSI-String an MySQL. Schließlich steht er in einer ANSI-Datei, ist also als ANSI gespeichert. Das gilt natürlich auch für String-Übergaben an eigene Methoden etc.
mysql_query("SELECT * FROM table WHERE intID = 2");
Also: Konsequent ein Dateiformat benutzen. Christopher |
Re: Websiteumstellung auf UTF-8, wie geht's?
Zitat:
Der ANSI-Zeichensatz ist in UTF-8 enthalten! Du speicherst also schon in UTF-8... :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz