multi-byte karakterleri destekleyen değil, yeniden adlandırma

4 Cevap php

Ben yazarsanız:

('php109.tmp', 'test.jpg') yeniden adlandırmak;

o ince ve çalışma bulunuyor.

ama bunu değiştirmek eğer içine:

('php109.tmp', '. 中文 jpg') yeniden adlandırmak;

"Hayır böyle bir dosya veya dizin ..." rapor edeceğiz.

Ama çok bayt karakterler, ince okumak sonra veritabanına yazılır

zaman neden yeniden adlandırmak doğru başarısız?

4 Cevap

Ben PHP yüklü mbstring extension ve ben isimlerinde çokbaytlı karakterlerle yeniden adlandırma dosyaları herhangi bir sorun yok. Bu uzantı çalışma zamanında yüklenen yüklü olduğundan emin olun.

Ben mbstring bu özel sorunu ile ilgisi olduğuna neredeyse eminim, ben burada sorun. Php dosyasının kodlama dayanır düşünüyorum.

Kod editörü UTF-8 dosya kodlamasını (hiçbir BOM!) Değiştirmeyi deneyin.

Dosya sistemleri mutlaka UTF-8 kullanmayın. Örneğin, bu Wikipedia hakkında ne diyor NTFS:

NTFS allows any sequence of 16-bit values for name encoding (file names, stream names, index names, etc.). This means UTF-16 codepoints are supported, but the file system does not check whether a sequence is valid UTF-16 (it allows any sequence of short values, not restricted to those in the Unicode standard).

Sen karakter setlerinin arasında dönüştürmek için iconv() kullanmanız gerekebilir.

Bir setlocale(LC_ALL, array("es_ES.utf-8","es_ES@euro",'es_ES')); yapıyor denedin mi ya da ülke kodu ne olursa olsun, emin olun yerel doğru ayarlanmış olduğundan emin olmak için?

Bu çağrı içinde 'utf-8' ile bir şeyler dönmezse, o başarısız ve sonra geçerli yerel dönmek anlamına gelir.