Kullanıcıların sıkıştırılmış metin dosyalarını yüklemek bir sorun var. Ben metin içeriğini ayıklamak sonra MySQL veritabanı içe aktarın. Ben tarayıcıda metni görüntüler, ancak daha sonra bazı karakterler bozuk edilir. Ben onları kodlamak çalıştı ama ben PHP ile metin dosyalarının kodlamasını algılar ve iconv veya Mbstring ile UTF-8 dönüştürmek için kuramıyorum.
Mysql veritabanı charset UTF-8'dir.
header('Content-type: text/html; charset=utf-8');
ilave edilir.
Tried with iconv('UTF-8', 'UTF-8//IGNORE', $text_file_contents)
Ama bu sadece bozuk karakterleri kaldırır:. (Haberler farklı karakter olabilir ya 'veya Firefox tarayıcısı ile elle kontrol ederken "Firefox o ISO-8859-1 gösterdi ama onlar göndermek her yazı için kontrol edemez hangisi olmalıdır ) ayarlayın.
UTF-8 için bu karakterleri dönüştürmek nasıl?
EDIT: This is a modified function I found on http://php.net/manual/en/function.mb-detect-encoding.php origanlly written by prgss at bk dot ru .
function myutf8_detect_encoding($string, $default = 'UTF-8', $encode = 0, $encode_to = 'UTF-8') {
static $list = array('UTF-8', 'ISO-8859-1', 'ASCII', 'windows-1250', 'windows-1251', 'latin1', 'windows-1252', 'windows-1253', 'windows-1254', 'windows-1255', 'windows-1256', 'windows-1257', 'windows-1258', 'ISO-8859-2', 'ISO-8859-3', 'GBK', 'GB2312', 'GB18030', 'MACROMAN', 'ISO-8859-4', 'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8', 'ISO-8859-9', 'ISO-8859-10', 'ISO-8859-11', 'ISO-8859-12', 'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'ISO-8859-16');
foreach ($list as $item) {
$sample = iconv($item, $item, $string);
if (md5($sample) == md5($string)) {
if ($encode == 1)
return iconv($item, $encode_to, $string);
else
return $item;
}
}
if ($encode == 1)
return iconv($encode_to, $encode_to . '//IGNORE', $string);
else
return $default;
}
ve benim kod ben kullanın:
myutf8_detect_encoding(trim($description), 'UTF-8', 1)
ama yine de "eski'' altın bu metnin bozuk karakter verir.