За последние 24 часа нас посетили 16584 программиста и 1650 роботов. Сейчас ищут 2027 программистов ...

Проблема со спецсимволами - Incorrect string value

Тема в разделе "MySQL", создана пользователем DZEN, 17 июн 2008.

  1. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Есть файл в котором храняться товары (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.
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    - сделай mysql_real_escape_string()

    Экранирует специальные символы в unescaped_string, принимая во внимание кодировку соединения, таким образом, что результат можно безопасно использовать в SQL-запросе в функци mysql_query(). Если вставляются бинарные данные, то к ним так же необходимо применять эту функцию.
     
  3. EugeneTM

    EugeneTM Активный пользователь

    С нами с:
    19 апр 2008
    Сообщения:
    85
    Симпатии:
    0
    Про бинарные даже наверное усилить нужно. ОСОБЕННО не забывать про бинарные данные.
    Там никаких сообщений об ошибках не будет. А база отдавать всякую фигню будет. Концы потом не найдут.
     
  4. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    +1

    Делал. Даже htmlspecialchars() перед ней вызывал - эффект не удовлетворяет. Я все пробовал, и iconv и регулярки, и str_replace() пытался, уже всего не упомнить.
     
  5. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    А SET NAMES какой? И какая конкретно кодировка на поле?
     
  6. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    [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:
    1.  
    2. <?php
    3.     mysql_query("SET NAMES 'utf8'");
    4. ?>
    5.  
     
  7. EugeneTM

    EugeneTM Активный пользователь

    С нами с:
    19 апр 2008
    Сообщения:
    85
    Симпатии:
    0
    Тут ковырять наверное надо кто такой в utf8 '±'
    И почему его '\xB' перелопачивает.
    Или наоборот. Почему из '\xB' не получается '±'.