ucfirst() und UTF-8

Ich weiß auch nicht, warum ich unbedingt die Webseite auf UTF-8 umstellen musste. Mit ISO hat es doch wunderbar funktioniert und es gab überhaupt keine Probleme.

Anstatt dass man mit UTF-8 alles vereinfacht ist es einfach nur wahnsinnig kompliziert geworden. Ich werde warscheinlich das ganze Projekt wieder auf ISO umstellen, da das UTF-8 keine Vorteil bringt. Der Sinn der Umstellung auf UTF-8 besteht anscheind nur darin, dass jemand festgelegt hat, das es modern ist.

Ich bedanke mich trotzdem für die Hilfe und hoffe dass Webmaster die vorhaben Ihre Webseite umzustellen, lieber die Finger davon lassen :)
 
Ich kann nicht zustimmen, da ich alles in UTF-8 gestalte, weil es einfach einfacher ist. Und moderner.

Nachtrag: Bei mir funktioniert ucfirst() bei Umlauten im Übrigen auch nicht mit UTF-8, aber eigentlich kann man so etwas doch leicht lösen:
PHP:
function utf8_ucfirst ($string)
{
  return utf8_encode(ucfirst(utf8_decode($string)));
}
 
Zuletzt bearbeitet:
Ja aber ich sehe daran nichts, was einfach ist. Man muss soviele Funktionen selbst bauen, welche bei UTF-8 nicht funktionieren.

Welche Funktionen funktionieren in UTF-8 denn auch nicht? Weil wenn dann muss ich gleich alle umstellen, um mir spätere Arbeiten zu ersparen :)
 
Oh man, dann funktionieren ja zusätzlich preg_match, strpos und weitere Funktionen auch nicht oder? So wie ich das sehe, muss ich ja die komplette Webseite neu schreiben. Wie machst du das denn, wenn du deine Webseite auch in UTF-8 erstellst?
 
Wie gesagt: es sollte nur die angegebenen Funktionen aus meiner Liste betreffen. strpos und preg_match ist definitiv UTF-8 sicher.
 
Ok vielen Dank, dann werde ich mich morgen mal frisch daran machen.

Ich danke dir für die kompetente Hilfe! :)
 
Ich habe mir nun Funktionen gesucht, welche UTF-8 unterstützen.

Jedoch wird bei der Funktion mb_ucfirst () trotzdem alles klein geschrieben und bei der zweiten Funktion werden anstatt des Umlautes ein Fragezeichen dargestellt. Die Datei selbst ist in UTF-8 ohne BOM gespeichert. Wo liegt der Fehler!?

PHP:
header ( "content-type: text/html; charset=UTF-8" );

if (function_exists ( "mb_ucfirst" ) == false) {
	function mb_ucfirst($text) {
		return mb_strtoupper ( substr ( $text, "0", "1" ) ) . substr ( $text, "1" );
	}
}

echo mb_ucfirst ( "österreich" );
echo "<br>";
echo mb_strtolower ( "ÖSTERREICH" );
 
Das Problem lag am Encoding, folgendes funktioniert nun:

PHP:
header ( "content-type: text/html; charset=UTF-8" );

if (function_exists ( "mb_ucfirst" ) == false) {
	function mb_ucfirst($string, $encoding) {
		return mb_strtoupper ( mb_substr ( $string, "0", "1", $encoding ), $encoding ) . mb_substr ( $string, "1", strlen ( $string ), $encoding );
	}
}

echo mb_ucfirst ( "österreich", "UTF-8" );
echo "<br>";
echo mb_strtolower ( "ÖSTERREICH", "UTF-8" );

Im übrigen funktioniert substr auch unter UTF-8 nicht!
 
Zuletzt bearbeitet:
Ich habe es nun mit einer Testdatei versucht mit dem Inhalt:

PHP:
<?php
header('Content-Type: text/html; charset=utf-8');
setlocale(LC_ALL, "de_DE");
echo ucfirst ( "österreich" );
?>

Trotzdem wird der Umlaut am Anfang nicht groß geschrieben. Wenn ich den charset auf ISO umstelle, funktioniert es.


LC_ALL zu setzen ist mehr als Fail, du hast damit auch die Dezimalzahlen von "x.xxx" auf "x,xxx" umgestellt, könnte beim DB-Insert zu lustigen Fehlern führen, wenn es nicht zusätzlich behandelt wird
 
Zurück