PHP 5.3 ve Windows Vista'da Japon dosya ile çalışmak?

3 Cevap php

Şu anda bir klasörde görünüyor basit bir komut dosyası yazmak çalışıyorum ve bir RSS beslemesi tüm dosya adlarının bir listesini döndürür ediyorum. Ancak ben büyük bir duvara isabet var ... Ben onlara Japonca karakterler içeren dosya adlarını okumaya çalıştığınızda zaman, o? 'Lı olarak onları gösterir. Ben burada bahsedilen çözümleri denedim: http://stackoverflow.com/questions/482342/php-readdir-problem-with-japanese-language-file-name - Ancak onlar bile, nedense çalışmıyor:

header('Content-Type: text/html; charset=UTF-8');
setlocale(LC_ALL, 'en_US.UTF8');
mb_internal_encoding("UTF-8");

Üstünde (ben bu halledene kadar düz metin olarak dışa aktarma).

Ben ne yapabilirim? Ben bu işe ihtiyacım var ve ben çok zaman yok.

3 Cevap

PHP bunu yapabilirsiniz. Dizinleri okuma ve PHP bu programı aramak için küçük bir C programı yazınız.

See also: http://en.literateprograms.org/Directory_listing_(C,_Windows) http://www.daniweb.com/forums/thread74944.html http://forums.devshed.com/c-programming-42/reading-a-directory-in-windows-36169.html

Bu bir Windows sunucu üzerinde düzgün Japon dosya adlarını görüntüler

if ($handle = opendir($this->dir)) {
    while (false !== ($file = readdir($handle))){
        $name = mb_convert_encoding($file, "UTF-8", "SJIS-win" );
        echo "$name<br>";
    }
    closedir($handle);
}

Bu, mümkün değildir. PHP'nin kendisi bir kısıtlamadır. PHP geniş Wın32 API çağrıları kullanmak değildir, bu yüzden kod sayfası ile sınırlı konum. UTF-8 (65001), bu amaç için geçerli değildir.

Eğer readdir_r() içinde bir kesme noktası ayarlarsanız win32\readdir.c, sen FindNextFile zaten istediğiniz karakterlerin yerine soru işaretleri ile bir dosya adını döndürür, böylece göreceksiniz Eğer ayrı PHP'nin kendisi yama dan, bu konuda yapabileceği bir şey yok.