Ben bir sunucu çalışan linux Unicode karakterler içeren bir dosya var. Ben sunucuya SSH ve hiçbir sorun dosya / klasör erişen unicode karakter içeren dosya / klasöre gitmek için sekme tamamlama kullanın. Sorun PHP ile dosyayı erişmeyi deneyin ne zaman doğar (Ben gelen dosya sistemine erişen edildi işlevi oldu stat
). Ben çıkış yolunu tarayıcıya PHP komut dosyası tarafından oluşturulan ve terminale yapıştırın eğer dosya da (hatta terminalde bakarak olsa dosya yolları tamamen aynıdır) var gibi görünüyor.
Ben varsayılan php_ini aracılığıyla kodlama yanı sıra set olarak UTF8'i kullanmak için PHP set mb_internal_encoding
. Ben PHP filepath dize kodlamasını kontrol ve olması gerektiği gibi, UTF8 olarak ortaya çıkıyor. Biraz kurcalama daha ben hexdump
é karakterine karar terminalin sekme tamamlama ve hexdump
PHP komut dosyası tarafından oluşturulan 'normal' é karakterin veya tarafından karşılaştırın elle klavye (os x üzerinde opsiyon + e + e) üzerinden karakter girme. İşte sonuç:
echo -n é | hexdump 0000000 cc65 0081 0000003 echo -n é | hexdump 0000000 a9c3 0000002
Terminalin doğru bir dosya referansı sağlar: e karakter 3 bayt biridir. Ben nereye gidileceği, hangi kodlama PHP kullanmanız gereken emin değilim? I iconv
veya mb_convert_encoding
ile başka kodlama yolunu dönüştürmek olmalıdır?