Есть файл в котором храняться товары (CSV), файл - utf-8. Все нормально работает кроме строк типа "DVD±RW LG GH20 Silver Sata". На них выдется сообщение "Incorrect string value: 'DVD\xB1RW ...' for column..." и в mysql_error выводиться такая строка "'DVD�RW ASUS 2014S1/A6/BLK/B/ IDE'". Поле TEXT в utf, все как положено. Помогите пожайлуста, все перепробовал, очень не хочеться переделывать в BINARY.
- сделай mysql_real_escape_string() Экранирует специальные символы в unescaped_string, принимая во внимание кодировку соединения, таким образом, что результат можно безопасно использовать в SQL-запросе в функци mysql_query(). Если вставляются бинарные данные, то к ним так же необходимо применять эту функцию.
Про бинарные даже наверное усилить нужно. ОСОБЕННО не забывать про бинарные данные. Там никаких сообщений об ошибках не будет. А база отдавать всякую фигню будет. Концы потом не найдут.
+1 Делал. Даже htmlspecialchars() перед ней вызывал - эффект не удовлетворяет. Я все пробовал, и iconv и регулярки, и str_replace() пытался, уже всего не упомнить.
[sql] CREATE TABLE `store` ( `id` bigint(20) unsigned NOT NULL auto_increment, `name` text NOT NULL, `price` float(5,2) NOT NULL default '0.00', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; [/sql] PHP: <?php mysql_query("SET NAMES 'utf8'"); ?>
Тут ковырять наверное надо кто такой в utf8 '±' И почему его '\xB' перелопачивает. Или наоборот. Почему из '\xB' не получается '±'.