Проблема с кодировкой при чтении значений из файла utf-8 в PHP и помещении их в базу данных.`

Я читаю файл в кодировке UTF-8, используя PHP, и загружаю содержимое непосредственно в базу данных. Проблема в том, что когда я встречаю такой символ, как " , он помещает следующее " в базу данных.

Как я могу правильно закодировать это, я читаю файл UTF-8, а сопоставление столбца моей базы данных - UTF-8. Что я делаю не так? Есть ли хорошая функция, которую мне не хватает? Любая помощь приветствуется.

Это моя таблица:

CREATE TABLE tblProductData (
  intProductDataId int(10) unsigned NOT NULL AUTO_INCREMENT,
  strProductName varchar(50) NOT NULL,
  strProductDesc varchar(255) NOT NULL,
  strProductCode varchar(10) NOT NULL,
  dtmAdded datetime DEFAULT NULL,
  dtmDiscontinued datetime DEFAULT NULL,
  stmTimestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (intProductDataId),
  UNIQUE KEY (strProductCode)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci;

РЕДАКТИРОВАТЬ:

Я читаю дату так:

$hFile = @fopen($FileName, "r") or exit("\nUnable to open file: " . $FileName);
if($hFile)
{
    while(!feof($hFile))
    {
        $Line = fgets($hFile);
        $this->Products[] = new Product($Line);
    }
    fclose($hFile);
}

person Gary Willoughby    schedule 05.08.2011    source источник
comment
Обожаю это -› разбрызгивание содержимого   -  person 65Fbef05    schedule 06.08.2011
comment
Можете ли вы показать, как вы читаете файл и вставляете его в базу данных?   -  person JW.    schedule 06.08.2011
comment
возможный дубликат Проблема в кодировке utf-8 PHP + MySQL   -  person Dr.Molle    schedule 06.08.2011


Ответы (2)


Вы должны установить кодировку соединения с этим запросом

SET NAMES 'utf8'

перед сохранением каких-либо данных.

Имейте также в виду, что некоторые графические интерфейсы базы данных или веб-интерфейсы (например, phpMyAdmin) показывают неправильную кодировку, даже если ваши данные закодированы правильно. Это происходит, например, с SequelPro на Mac и с phpMyAdmin в некоторых средах.

Вы должны доверять своему браузеру, т.е. показывать вставленный контент на странице, которая имеет

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

заголовок и посмотрите, правильно ли отображаются данные. Или еще лучше доверять mysql командной строке с помощью оболочки:

echo 'SELECT yourdata FROM your table' | mysql -uuser -pyourpwd db_name
person Fabio    schedule 06.08.2011

использовать

mysql_query("SET NAMES utf8");

сразу после подключения к БД и убедитесь, что кодировка браузера тоже в utf-8

 header("Content-Type: text/html; charset: utf-8");
person genesis    schedule 06.08.2011