PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] Frage zu setlocale und UTF-8


Scream
2009-03-03, 17:56:41
Ich entwickle gerade ein Projekt und habe es auf UTF-8 ausgelegt.
Klappt auch mit allen Sonderzeichen soweit ganz gut.

Nur ein Problem tritt auf und ich weiß nicht wirklich wie ich es lösen soll.
Das Datum ist im DATETIME-Format in der DB hinterlegt, z.B. "2009-03-03 17:39:09".
Die Funktion bekommt ein Datum übergeben und bereitet es auf:

function date_mysql2datetime($mysqldatetime, $short=0) {
$time = strtotime($mysqldatetime);
setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
if ($short == 1) {
return strftime("%d.%m.%Y, ", $time).substr($mysqldatetime, 11,5);
} else {
return strftime("%A, %d. %B %Y, ", $time).substr($mysqldatetime, 11,5);
}
}

Leider gibt er nun bei März das "ä" nicht richtig aus.
Wie kann ich das Problem beheben?

Sephiroth
2009-03-03, 18:16:32
Den Zeichensatz nochmals mit iconv nach UTF-8 konvertieren oder an deine Sprachen ".UTF8" (ja UTF-8 ohne Bindestrich) anhängen.

Scream
2009-03-03, 18:25:00
Den Zeichensatz nochmals mit iconv nach UTF-8 konvertieren oder an deine Sprachen ".UTF8" (ja UTF-8 ohne Bindestrich) anhängen.

Danke für die schnelle Antwort. Das mit dem ".UTF8" anhängen funktioniert nicht. Wenn ich es verwende wird immer das englische Datum ausgegeben.

iconv funktioniert, mir wäre aber die erste Methode lieber. Warum klappt das nicht?

Sephiroth
2009-03-03, 18:41:19
Weil dann offenbar keine UTF-8 Sprachversion auf dem Server installiert ist.

Scream
2009-03-03, 23:08:45
das könnte durchaus sein, da es auf meinem webserver klappt, nur bei meinem XAMPP nicht

weißt du zufällig wie man dort das zeugs nachinstallieren kann?

Sephiroth
2009-03-04, 00:49:52
XAMPP für Windows? Wenn ja, dann musst du die Unterschiede bei setlocale (http://de.php.net/manual/de/function.setlocale.php)beachten, d.h. deu statt de und dort wird .UTF8 auch gar nicht gehen.

Scream
2009-03-04, 00:54:11
XAMPP für Windows? Wenn ja, dann musst du die Unterschiede bei setlocale (http://de.php.net/manual/de/function.setlocale.php)beachten, d.h. deu statt de und dort wird .UTF8 auch gar nicht gehen.

Ja genau für Windows.
Dann lass ich es lokal einfach so, wenn man unter Windows gar kein UTF8 herbekommt. Auf dem Space klappts ja...

Gast
2009-03-05, 14:56:02
Ja genau für Windows.
Dann lass ich es lokal einfach so, wenn man unter Windows gar kein UTF8 herbekommt. Auf dem Space klappts ja...
Klar bekommt utf-8 auch unter windows! du musst eben nur den umweg über iconv in dem falle gehen. auch beim fremden linux server ist es nicht immer sicher, dass die sprache in utf-8 installiert ist.
die kompatibelste lösung ist daher iconv.