Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Websiteumstellung auf UTF-8, wie geht's? (https://www.delphipraxis.net/107651-websiteumstellung-auf-utf-8-wie-gehts.html)

Matze 31. Jan 2008 08:35


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:
# 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;
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).

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:
SET NAMES 'utf8'
Es kann ja nicht sein, dass ich beim Eintragen und Auslesen immer utf8_encode() bzw. utf8_decode() verwenden muss.

Wo liegt der Fehler?

Grüße

xaromz 31. Jan 2008 08:39

Re: Websiteumstellung auf UTF-8, wie geht's?
 
Hallo,
Zitat:

Zitat von Matze
Es kann ja nicht sein, dass ich beim Eintragen und Auslesen immer utf8_encode() bzw. utf8_decode() verwenden muss.

eine andere Lösung habe ich zumindest bisher nicht gefunden.

Zitat:

Zitat von Matze
Wo liegt der Fehler?

Das würde mich auch interessieren.

Gruß
xaromz

Xong 31. Jan 2008 09:01

Re: Websiteumstellung auf UTF-8, wie geht's?
 
Zitat:

Zitat von Matze
Wo liegt der Fehler?

Das schönste UTF-8 bringt dir nichts, wenn du die Daten nicht auch in dieser Kodierung verschickst!

Mit welchem Zeichensatz sind deine Dateien kodiert?

LG,
Xong

Matze 31. Jan 2008 09:10

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

Xong 31. Jan 2008 09:23

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

Matze 31. Jan 2008 09:28

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.

Xong 31. Jan 2008 10:03

Re: Websiteumstellung auf UTF-8, wie geht's?
 
Zitat:

Zitat von Matze
Ich nutze PHPEclipse [...]

Man kann dort auch als UTF-8 speichern. Das würde ich dir dringend empfehlen!
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:

Zitat von Matze
Dennoch würde mich interessieren, ob das wirklich zwingend erforderlich ist.

Du kannst nie wissen, welche Daten an deinen Server gesendet werden. Und so kannst du auch nicht verhindern, dass eine "falsche" Kodierung benutzt wird.

Matze 31. Jan 2008 10:12

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.

CalganX 31. Jan 2008 10:20

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:
mysql_query("SELECT * FROM table WHERE intID = 2");
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.

Also: Konsequent ein Dateiformat benutzen.

Christopher

Xong 31. Jan 2008 10:22

Re: Websiteumstellung auf UTF-8, wie geht's?
 
Zitat:

Zitat von Matze
Ich kann die Dateien natürlich als UTF-8 speichern, sehe jedoch keinen Grund dafür, da ich nicht über den ANSI-Zeichensatz hinausgehe.

Hab ich dich. =)
Der ANSI-Zeichensatz ist in UTF-8 enthalten!
Du speicherst also schon in UTF-8... :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz