php iconv translit für das entfernen von Akzenten: nicht so funktioniert, wie unter VORBEHALT?

betrachten Sie diese einfachen code:

echo iconv('UTF-8', 'ASCII//TRANSLIT', 'è');

druckt es

 `e

statt nur

 e

weißt du, was ich falsch mache?


nichts geändert, nach dem hinzufügen von setlocale

setlocale(LC_COLLATE, 'en_US.utf8');
echo iconv('UTF-8', 'ASCII//TRANSLIT', 'è');
  • Erste, dies ist eine von Grund auf böse und falsche Sache zu tun zu wollen. Zweitens, der einzig vernünftige Ansatz ist, um dazu führen, dass Ihr code in Unicode Normalization Form D gebildet durch die kanonische ZERLEGUNG und entfernen Sie diejenigen, die code-Punkte mit der Marke-Eigenschaft. Es wird nicht "fix" alles, natürlich: Tschüß
  • Ignorieren tchris, ist dies DER Weg, es zu tun, ich benutze es in der Praxis. Der einzige Fehler, den Sie gemacht ist, dass die locale-Angabe "Unterklasse" ist setlocale(LC_CTYPE, 'en_US.UTF-8'); -> LC_TYPE, nicht _COLLATE. Tschüss.
  • Ich habe das gleiche problem - es ist sicherlich nicht LC_TYPE... das erzeugt einen Fehler (für mich zumindest). Ich habe versucht LC_ALL (das ist das, was jeder andere auch sagt) - keine Wirkung. Ich Stelle in der Zeichenfolge CŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ und immer CSOEZsoez"YyenuA 'A^A~A"AAAECE'E^E"EI ' I^I"ID~NO'O^O~O"OOU 'U^U"U'Yssa'a^a~a"aaaece 'E^e"ei'i^i"id~no' o^o~o"oou'u^u"u'y"y
InformationsquelleAutor dynamic | 2011-02-06
Schreibe einen Kommentar