Neden fgetcsv aksan ile bazı karakterler düşer?

0 Cevap php

Similar questions:
Some characters in CSV file are not read during PHP fgetcsv() ,
fgetcsv() ignores special characters when they are at the beginning of line

Benim uygulama kullanıcıların (onun 5 iç kullanıcılar her zaman geçerli bir dosya yüklediniz - LF tarafından, virgülle ayrılmış, alıntı kayıtları ucu) bir CSV dosyası yükleyebilirsiniz bir formu vardır, ve dosya daha sonra PHP kullanarak bir veritabanına aktarılır:

$fhandle = fopen($uploaded_file,'r');
while($row = fgetcsv($fhandle, 0, ',', '"', '\\')) {
    print_r($row);
    // further code not relevant as the data is already corrupt at this point
}

Ben değiştiremem nedenlerden dolayı, kullanıcılar Windows-1250 charset kodlanmış dosya gönderiyor. Sorun: Win1250 bir tek bayt, 8-bit karakter kodlama, ve some (! Hepsi değil) 127 üzerinden karakter bırakılan olmasıdır. Örnek veri:

"15","Ústav"
"420","Špičák"
"7","Tmaň"

olur

Array (
  0 => 15
  1 => "stav"
)
Array (
  0 => 420
  1 => "pičák"
)
Array (
  0 => 7
  1 => "Tma"
)

Şimdi fgetcsv için dokümantasyon "4.3.5 fgetcsv () artık ikili güvenli" yana olduğunu söylüyor, ama görünüşe göre öyle değil. Ben yanlış bir şey yapıyorum, ya da bu fonksiyon kırık ve ben CSV ayrıştırmak için farklı bir şekilde bakmak gerekir?

0 Cevap