У меня очень странная ситуация. следующий текст в моем csv-файле и файле показан как кодировка ANSI на notpade ++.
Œœ
Ÿ
654123 ÁÁÀÀâÂäããååæÆçæÆéÉèÈêÊëËíÍìÌîÎïÏñÑóÓòÒôÔöÖõÕŒœúÚùÙûÛüÜÿŸ
И вот мой пример кода:
<?php
header('Content-Type: text/html; charset=UTF-8');
$handle = fopen("unicode.csv", "r");while (($line = fgets($handle)) !== FALSE)
{
$cur_encoding = mb_detect_encoding($line) ;
if($cur_encoding == "UTF-8" && mb_check_encoding($line,"UTF-8"))
{
echo "\r\n UTF-8".$line;
}
else
{
echo "\r\n encode UTF-8".utf8_encode($line);
}
}?>
проблема с кодом, который я нашел:
Пожалуйста, помогите мне выяснить, почему эти два символа отсутствуют.
еще одно странное поведение заключается в том, что он показывает символ в Chrome, но не в FF или IE
Замечания: Я могу читать успешно, если я конвертирую кодировку в UTF-8, используя Notepad ++. поэтому, пожалуйста, не предлагайте это решение.
Получить CSV-файл здесь
Этот файл закодирован в кодовой странице 1252 a.k.a. MS-ANSI a.k.a. WINDOWS-1252 a.k.a. Windows Latin 1. Чтобы преобразовать его в UTF-8:
echo iconv('CP1252', 'UTF-8', file_get_contents('unicode.csv'));
Попробуй это:
$encoding = mb_detect_encoding($line, array(
'UTF-8', 'ASCII'
));
var_dump(iconv($encoding, 'UTF-8', $line));exit;