2010-08-23 14 views
7

, iki dosya var dosya adı. Onlar böyle şunlardır: IMG_9029_измен.размер.jpg and słońce32 opalenier1.jpg gibireaddir ve benim localhost makinede scandir

IMG_9029_?????.??????.jpg and slonce32 opalenier.jpg 

Window XP SP3, php5.2.12 

nasıl alabilirim dosya adı?

+0

Dosya adınız unicode biçiminde mi? ve dosya adlarını web sayfanıza aktardığınızda, web sayfası da unicode'da kodlanıyor mu? – minghan

+0

http://stackoverflow.com/questions/977635/how-to-open-file-in-php-that-has-unicode-characters-in-its-name – Bakudan

cevap

1

Adlar muhtemelen doğrudur, ancak sayfanızın kodlamasını UTF-8 olarak ayarlamanız gerekir.

sayfalarınızın başlık bölümüne ekleyin: özel karakterler doğru görünecek şekilde
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

Ardından UTF8 Dizelerinizi dönüştürün.

Ben öyle bir işlevi yapılmış, bu

Encoding::toUTF8(). denir Kullanımı:

$utf8_string = Encoding::toUTF8($utf8_or_latin1_or_mixed_string); 

İndir:

http://dl.dropbox.com/u/186012/PHP/forceUTF8.zip

+1

suggestion.filename için teşekkür IMG_9029_ olarak değiştirildi? readdir() veya scandir() kullandığımda jpg . Bu isim ile nasıl kodlanır. Bunun mümkün olmadığını düşünüyorum. – Chameron

8

Ben senin php kodlama utf-8 olduğunu varsayalım.

$files = scandir($dirname); 
foreach ($files as $file) { 
    $filename = iconv ("windows-1251" , "UTF-8", $file); 
    echo $filename ."\n"; 
} 

İlk dosya için çalışmalı, ancak ikinci dosya için hangi kodlamanın kullanıldığını bilmiyorum.

Temel sorun, php 5'in dosya işlemleri için utf-8'i desteklememesidir. Dahili olarak ansi. Yani ansi api (sadece 8bit kodlama) kullanarak dosya adlarını okur.

İlgili konular