Кодирование MySQL, PHP и CSV файла - PullRequest
1 голос
/ 06 декабря 2011

У меня есть база данных mysql с некоторыми китайскими ключевыми словами, которые мне нужно сравнить с некоторыми ключевыми словами в CSV-файле с использованием PHP.

Кажется, у меня проблема с кодировкой, когда я сравниваю 2 ключевых слова, которые, как я знаю, совпадают (с китайскими иероглифами), скрипт говорит, что они разные.

Я использую «SET NAMES utf8» в начале скрипта для базы данных. сопоставление для поля ключевых слов в таблице: utf8_bin.

в сценарии, который я также использовал

mb_internal_encoding("UTF-8");
header('Content-Type: text/xml, charset=UTF-8; encoding=UTF-8');

Я читаю файл CSV с

    $data = fgetcsv($handle, 1000, ",")) !== FALSE

и моя строка сравнения такая

    $database_keyword == CSV_keyword

относительно файла CSV. Я использовал notepad ++, чтобы попытаться изменить кодировку, но все еще не работает.

Большое спасибо.

изменить: я нахожусь на Windows 7

РЕДАКТИРОВАТЬ: ДОБАВЛЕНИЕ РЕШЕНИЯ это могло бы помочь кому-то там, я обнаружил, что моя проблема была вызвана включением спецификации в строки из файлов csv. Мне удалось удалить его с помощью этой функции

    private function rmBOM($string) { 
        if(substr($string, 0,3) == pack('CCC',0xef,0xbb,0xbf)) { 
            $string=substr($string, 3); 
        } 
        return $string; 
    }

1 Ответ

0 голосов
/ 07 декабря 2011

У меня ограниченный опыт работы с Windows, так как я обычно работаю в Linux, но я работал в интеграционных проектах, работающих с разными кодировками (кодировками).

  1. Убедитесь, что соединение с базой данных находится в режиме UTF.Посмотрите на этот документ .
  2. Убедитесь, что файл CSV находится в UTF.Вы можете принудительно выполнить преобразование с помощью функции iconv ().
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...