setlocale(LC_CTYPE, "de_DE.UTF8")
lubsetlocale (LC_CTYPE, "de_DE.UTF8") lub setlocale (LC_CTYPE, "de_DE.UTF-8")?
setlocale(LC_CTYPE, "de_DE.UTF-8")
Z myślnikiem czy bez? Widziałem obie odpowiedzi.
setlocale(LC_CTYPE, "de_DE.UTF8")
lubsetlocale (LC_CTYPE, "de_DE.UTF8") lub setlocale (LC_CTYPE, "de_DE.UTF-8")?
setlocale(LC_CTYPE, "de_DE.UTF-8")
Z myślnikiem czy bez? Widziałem obie odpowiedzi.
bym uruchomić locale -a
i użyć ciągu wyprowadza. Na OS X 10.9 otrzymuję de_DE.UTF-8
. Na Debianie 6 otrzymuję . dpkg-reconfigure locales
używa de_DE.UTF-8
z drugiej strony. Najbezpieczniejszym sposobem jest prawdopodobnie sprawdzenie wartości zwracanej setlocale
i wypróbowanie różnych wariantów w przypadku niepowodzenia.
To powiedziawszy, wszystkie wersje powinny zwykle działać: z myślnikiem lub bez, z dużymi lub małymi literami.
Nazwa kodowania to UTF-8.
ale w tym przypadku oba parametry są prawidłowe i robią to samo zadanie dla ciebie
Oto pragmatyczne rozwiązanie do jego programowego rozwiązania. Po niepowodzeniu setlocale
zwraca wartość false.
if (!setlocale(LC_ALL, str_replace('utf-8', 'utf8', $locale))
&& !setlocale(LC_ALL, str_replace('utf8', 'utf-8', $locale))) {
/* fail gracefully */
}
/* your locale has been set up properly
W moim przypadku można by pracować na naszych komputerach Mac, a drugi będzie pracować na polach Linux CI, więc rozwiązanie to sprawia, testy przechodzą na obu.
Btw; uważaj na LC_ALL. Ustaw locale na najsłabszy zakres, jakiego potrzebujesz.
Można faktycznie przekazać tablicę wartości do setLocale()
. Właśnie natknąłem się na ten problem, rozwijając system OSX i testując na hostingu działającym pod Linuksem. Teraz robię to: setLocale(LC_ALL, ["de.utf", "de_DE.utf", "de_DE.UTF-8", "de", "de_DE"])
Pierwszy, który pasuje, to odejść. Dokumenty: https://secure.php.net/setlocale
Idealny. Mam 'Debian GNU/Linux 6.0.9 (squeeze)' a 'locale -a' wypisuje' de_DE.utf8' - pośród setek innych. –
@what 'locale -a | grep -i de_de' powinien pomóc. – sjas