2011-09-21 12 views
5

Wygląda na to, że obsługa plików w PHP nie działa z pewnymi znakami (np. €) zakodowanymi UTF-8 , jeśli ścieżka jest zakodowana na stałe, a plik php zapisany jako UTF- 8.Obsługa plików PHP ze znakami specjalnymi UTF-8

Czy można to zrobić z wszystkimi (lub większością zachodnich znaków)? Czy istnieje biblioteka, która to umożliwia? Ponieważ nie mogłem znaleźć żadnego.

Na przykład folder o nazwie äöü&()éèàâêûô@$+ç%&=! £ _; {[]} ~ '¢ ¬§ ° # @ | ... ... € `w systemie Windows nie będzie działał z parametrem is_dir().

EDIT: ROZWIĄZANIE

Ok, znalazłem rozwiązanie. Nie testowałem jeszcze w pełni, nie jestem pewien, czy to jest niezawodny jeszcze i nie wiem, czy to jest najlepsza praktyka, ale kodowanie string z powrotem do ANSI wydaje się zrobić lewy (przynajmniej dla napisanego ciągu).

$string = iconv(mb_detect_encoding($string, "auto"), 'Windows-1252', $string); 

Domyślam się, że powinno to działać z domyślnym ustawieniem większości zachodnich komputerów z systemem Windows.

Odpowiedz

0

Nie chciałbym też pracować z takim folderem! :-)
Dowcipy od siebie, możesz spróbować zapisać plik jako UTF-16, ponieważ ma to być kodowanie Windows używa wewnętrznie.

+1

Witam. Dzięki za twoją odpowiedź. Dałeś mi pomysł. Próbuję go zakodować z powrotem do ANSI z czymś takim '$ string = iconv (mb_detect_encoding ($ string," auto "), 'Windows-1252', $ string);' i wygląda na to, że działa. Nie testowałem jeszcze w pełni, ale działa dla napisanego przeze mnie napisu (na razie). – huuerequer

Powiązane problemy