2011-09-21 31 views
5

Dường như việc xử lý tệp trong PHP không hoạt động với các ký tự nhất định (ví dụ: €) được mã hóa UTF-8 nếu đường dẫn được mã hóa cứng và tệp php được lưu dưới dạng UTF- số 8.Xử lý tệp PHP với ký tự đặc biệt UTF-8

Có thể làm cho nó hoạt động với tất cả (hoặc hầu hết các ký tự phương Tây) không? Có thư viện nào làm cho nó có khả năng không? Bởi vì tôi không thể tìm thấy bất kỳ.

Ví dụ: thư mục có tên äöü&()éèàâêûô@$+ç%&=! £ _; {[]} ~ ´ ¢ ¬§ ° # @ ¦… € `trong cửa sổ sẽ không hoạt động với is_dir().

CHỈNH SỬA: GIẢI PHÁP

Ok, tôi đã tìm được giải pháp. Tôi đã không thử nghiệm nó hoàn toàn chưa, tôi không chắc chắn nếu nó là foolproof được nêu ra và tôi không biết nếu đây là thực hành tốt nhất nhưng mã hóa chuỗi trở lại ANSI dường như làm các trick (ít nhất là cho chuỗi tôi đăng).

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

Tôi đoán điều này sẽ hoạt động với cài đặt mặc định của hầu hết các máy tính Windows ở phía tây.

Trả lời

0

Tôi cũng từ chối làm việc với thư mục như vậy! :-)
Ngoài ra, bạn có thể thử lưu tệp dưới dạng UTF-16, vì đây được cho là mã hóa Windows sử dụng nội bộ.

+1

Xin chào. Cám ơn phản hồi của bạn. Bạn đã cho tôi một ý tưởng. Tôi cố gắng mã hóa nó trở lại ANSI với một cái gì đó như thế này '$ string = iconv (mb_detect_encoding ($ string," tự động "), 'Windows-1252', $ string);' và nó dường như làm các trick. Tôi chưa thử nghiệm nó đầy đủ nhưng làm việc cho chuỗi tôi đăng (cho bây giờ). – huuerequer

Các vấn đề liên quan