CSV, сгенерированный в Excel, специальные символы исчезают (ÆØÅ) - PHP - PullRequest
2 голосов
/ 21 ноября 2011

У меня есть несколько csv-файлов, которые мне нужно импортировать в нашу систему, используя php.Я живу в Норвегии, и у нас есть 3 специальных символа (æøå и caseØÅ в верхнем регистре).Проблема в том, что заглавные версии просто исчезают из моих строк.Строчные отображаются с?, Но при использовании utf8_encode я получаю правильные буквы.

Я использую следующую функцию для импорта и чтения csv-файла.Буквы ÆØÅ уже исчезли при сбросе $arr

$row = 1;
$arr = array();
if (($handle = fopen($imp['importBreddegave'], "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
        $num = count($data);
        $row++;

        for ($c=0; $c < $num; $c++) {
            $arr[$row][$c] = $data[$c];
        }
    }

    fclose($handle);
}

Я думаю, мне нужно каким-то образом указать кодировку символов, но я не могу понять, как.Насколько я выяснил, по умолчанию, cvs-файлы кодируются WINDOWS-1257.Остальная часть моей страницы закодирована как UTF-8

Кто-нибудь получил какие-нибудь изящные трюки?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2011

Этот уродливый хак сработал.Мне пришлось избегать использования fgetcsv и fopen

$arr = array();
$content = iconv('windows-1252', 'utf-8', file_get_contents($imp['importBreddegave']));
$contentArr = explode("\n",$content);
foreach ($contentArr as $kr) {
    $tempArr = explode(";",$kr);
    $arr[] = $tempArr;
}

Надеюсь, это поможет

0 голосов
/ 21 ноября 2011

Если ваша страница выводит данные UTF-8 (или лучше: заявляет, что она выводит UTF-8 через заголовок HTTP / мета-кодировку), вы должны убедиться, что выводятся также данные UTF-8.Вы выводите данные в Windows-1257, хотя на вашей странице указано, что это UTF-8, из-за чего символы не отображаются правильно.

Преобразуйте их в utf8, используя любой из utf8_encode (даже лучше, потому что utf8_encode предполагает ваш источникcharset - это ISO-8859-1, а это не так) iconv (http://php.net/iconv)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...