2016-03-07 30 views
9

Dlaczego to powraca utf8 chars na jednym serwerze, ale nie na innym? Niektóre nazwy plików zawiera unicode jak æø i å ..Opendir i readdir zwraca utf8

W niektórych środowiskach utf8 znaki są drukowane w niektórych izo znaki są drukowane

header('content-type: text/plain'); 
$handle = opendir("./dir"); 
while($readdir = readdir($handle)){ 
    echo "$readdir\n"; 
} 

wyjście Content-Type:text/plain;charset=UTF-8

Retursvar 2 med fejl p� debiteringsniveau.xml 
Retursvar 2 med fejl på debiteringsniveau.xml 

same lokalizacje są zainstalowane na obu systemach (UTF8)

dpkg-reconfigure locales 
+0

Co bazowy system plików jest w użyciu? Czy jest to ten sam system plików używany na serwerach, które zwracają różne wyniki? –

+0

Wszystkie systemy to Jessie Debiana - te same dystrybucje. – clarkk

+0

OK, kolejne pytanie - jak ustawiasz typ zawartości. Zakładam, że korzystasz z serwera WWW i wyświetlasz w przeglądarce? Czy typ zawartości jest ustawiony za pomocą "header()" lub wbudowanego html ?? –

Odpowiedz

0

To nie jest pytanie PHP, jest to pytanie systemowe. Problem prawdopodobnie wynika z nieprawidłowo skonfigurowanych lokalizacji w jednym z systemów. Jeśli uruchomisz locale, możesz sprawdzić, które lokalizacje są aktualnie zainstalowane. Jeśli ustawienia regionalne nie są oznaczone jako UTF-8, będzie to Twój problem. Zainstalowanie poprawnego ustawienia lokalnego UTF-8 rozwiąże problem.

+0

Dokładne lokalizacje są zainstalowane w obu systemach. Oba UTF8 – clarkk

2

Może się okazać, że serwer WWW działa w różnych ustawieniach narodowych w każdym systemie.

Aby ustalić, to uruchom następujące php poprzez serwer:

<?php 
system("locale"); 

Szanse są serwer WWW zwraca poprawnych znaków działa zarówno w „utf8” lokalizacji lub „C”.

Ustawienia narodowe używane przez serwer sieci Web można ustawić w różnych miejscach. Można to zrobić przy użyciu ustawień ogólnosystemowych - lub specyficznych dla usługi. Prawdopodobnie musisz zbadać przyczynę jakiejkolwiek różnicy i zdecydować, czy chcesz zaktualizować ustawienia regionalne, czy tylko serwer WWW.

Na Debianie, system szeroko zmiana locale być zmieniane za pomocą

dpkg-reconfigure locales 

i postępując zgodnie z instrukcjami.

Alternatywnie, w przypadku określonych ustawień regionalnych. Ustaw zmienną środowiskową "LANG" na wymaganą w skrypcie init usługi przed uruchomieniem usługi. Prawdopodobnie istnieje plik konfiguracyjny specyficzny dla usługi, który możesz również wyszukać, aby utrzymać zmianę w przypadku aktualizacji serwera.

+0

Te same ustawienia regionalne są zainstalowane w obu systemach. Zarówno UTF8 – clarkk

+0

Aby wyjaśnić - ustawienia regionalne systemu mogą być inne niż ustawienia serwera WWW lub dowolnego innego procesu. działa pod. Jaką metodę wykorzystałeś do stwierdzenia, że ​​oba serwery działają pod UTF-8? –

-1

Spróbuj ustawić kodowanie UTF-8 w nagłówku:

header('content-type: text/plain; charset:utf-8');