Was bedeutet set_locale(LC_CTYPE, 'C'); eigentlich?
Wenn mein PHP-Skript mit UTF-8
Kodierung mit nicht-ascii-Zeichen, einige PHP-Funktionen wie strtolower()
funktionieren nicht. Ich könnte mit mb_strtolower, aber dieses Skript kann ausgeführt werden, auf alle Arten von verschiedenen Plattformen und Konfigurationen, und die multibyte-string-Erweiterung möglicherweise nicht zur Verfügung. Ich konnte überprüfen, ob die Funktion vorhanden ist, vor der Verwendung, aber ich habe die string-Funktionen übersät, überall in meinem code und würde eher nicht zu ersetzen jede Instanz.
Jemand schlug die Verwendung set_locale(LC_CTYPE, 'C')
, die er sagt, bewirkt, dass die string-Funktionen, um korrekt zu arbeiten. Das klingt fein, ich will aber nicht vorstellen, dass zu ändern, ohne zu verstehen, was es genau tut. Ich habe verwendet, set_locale zum ändern der Formatierung von zahlen vor, aber ich habe nicht verwendet die LC_CTYPE
fahne vor, und ich weiß nicht wirklich verstehen, was es tut. Was bedeutet der Wert 'C'
bedeuten? Danke!
- Verweis: php.net/manual/en/function.setlocale.php (Es wird nicht erklärt, was
C
hat, nicht gemeint als ein RTFM, nur der Vollständigkeit halber)
Du musst angemeldet sein, um einen Kommentar abzugeben.
C
bedeutet: "verwende die locale ist hardcoded" (und da die meisten *NIX-Programme sind in C geschrieben, es heißtC
). Es ist jedoch in der Regel nicht eine UTF8-locale.Wenn Sie mit multibyte-Zeichensätzen wie UTF-8, die Sie nicht in der normalen string-Funktionen - Verwendung der
mb_
Kollegen ist erforderlich. Allerdings, fast jedes PHP-installation sollte diese Erweiterung aktiviert.wcwidth
.