2011-11-30 29 views
7

Farklı işletim sistemi sürümlerinde farklı işletim sistemi (iso-8859-1, ms950, big5, gb2312..etc) kullanacağı gibi, varsayılan olarak dosya sisteminin kodlama işletim sistemini tanımlamak istiyorum. PHP kodlama farklı işletim sistemi? Herhangi bir fikir? Teşekkürler.PHP'de işletim sistemi kodlaması nasıl algılanır?

+0

Kodlamayı tanımlama ile ilgili sorularınız için buradaki diğer soruları kontrol ettiniz mi? Şu örneğe bakın: http://stackoverflow.com/questions/910793/php-detect-encoding-and-make-everything-utf-8 Veya şunu da yapabilirsiniz: http://stackoverflow.com/questions/505562/ Dosya-kodlama-php algılamak –

+0

Dosya sistemi bir kodlama delege edemiyorum ... mb_list_encodings desteklenen kodlamaların bir listesini döndürecektir. – Incognito

+0

Bu cevap istemiyorum ve bu benim ile farklı bir soru – Jasper

cevap

1

Linux bir kodlamaya sahip değil, dosya adları ikili dizilerde saklanır ve herhangi bir şey içerebilir. Belirli bir kodlamada uygulamanın yapıldığının yorumlanması. Çoğu zaman bu sadece UTF-8 olacaktır. Ama evet, dosya adlarının 'izleyicisine' bağlı. Ne yazık ki, bu pencerelerde ne cevap veremez

D.

formu UTF-8 normalleşmesini kullanacak OS/X üzerinde dosya sistemi erişme

. Dahili olarak UTF-16'nın bir varyasyonu olarak saklanır ancak makinemde PHP üzerinden erişilirken api CP-1252'dir, fakat evet, bu dile bağlıdır.

0

değil yüzden tek ihtiyacınız bulmak, her dosya kodlama farklı kullanabilirsiniz kodlama bir tür var

print_r(explode(";", setlocale(LC_ALL, 0))); 

Sonra

0

FileSystem yapar kodlama için kod sayfası dönüştürme gerek deneyin dosya adı dizesini işlemek için doğru kodlama.

Bir dosya adı kodlamasını algılamak için, bu dosya adını bilinen tüm kodlama listesine dönüştürmek için "deneyin" ve orijinal dosya adı dizesini dönüştürülen dizgiyle eşitse karşılaştırır, sonra bu kodlama sizin aradığınız şeydir .

Bir dize, This way kullanıyorum kodlama türüne dönüştürün. Yani bu işi yapmak için, bir örnek için aşağıdaki kodu görebilirsiniz.

function getActuallEncoding($text) { 
    $encodingList = array('UTF-8', 'gb2312', 'ISO-8859-1', 'big5'); // Add more if you need. 
    foreach($encodingList as $oneEncode) { 
     $oneResult = iconv(mb_detect_encoding($text, mb_detect_order(), true), $oneEncode, $text); 
     if(md5($oneResult) == md5($text)) return $oneEncode; 
    } 
    return "UNKNOWN"; // This return value may cause problem, just let you know. 
} 

Yardım eder.

İlgili konular