2012-02-24 18 views
6

Gdybym miał napisać nowy plik php i dołączyć echo "current mb_internal_encoding: ".mb_internal_encoding(), skąd miałaby pochodzić wartość wyjściowa? Jak to się "decyduje"/jak to jest regulowane?Skąd pochodzi domyślna wartość mb_internal_encoding()?

Tło: napisałem aplikację internetową, gdzie myślałem, że zrobił wszystko, aby ustawić cały serwis na UTF-8, a okazało się, że nadal potrzebne, aby ustawić tę wartość ręcznie ...

Odpowiedz

6

To zależy od ustawienia z mbstring.internal_encoding in php.ini.

+1

Interesujące. Mam '; mbstring.internal_encoding = EUC-JP', więc nie jest aktywny. Również znajduję '; mbstring.language = Japanese','; mbstring.http_output = SJIS'. Rozwijam się przy użyciu stosu WAMPserver, nie mam pojęcia, dlaczego wszystkie te są ustawione na zestawy znaków Jpz. Każdy powód, dla którego nie powinienem przejść przez całe php.ini i zamienić jakiekolwiek wzmianki o dowolnym zestawie znaków na ''utf-8''? – JDelage

+0

Jeśli nie ustawię go ręcznie, 'mb_internal_encoding()' wychodzi jako ISO-8859-1 ... – JDelage

+1

Jup, z jakiegoś powodu PHP lubi ISO-8859 jako domyślny. Powinieneś obsługiwać te ustawienia w swojej aplikacji, aby zachować je przenośne. Zmiana pliku php.ini wszędzie tam, gdzie chcesz wdrożyć aplikację, często nie jest najwygodniejszym rozwiązaniem. – deceze