Мне кажется, этот вопрос миллион раз, но, похоже, все хотят решить проблему в базе данных. Я не буду. Я получаю эту ошибку при разборе большого текстового файла, выбирая то, что мне нужно, и вставляя его в свою базу данных. Примерно из 24 тысяч строк в 30 или около того содержатся недопустимые символы.
Вот пример ошибки, после которой следует запрос, вызвавший ее:
[Query Error: Incorrect string value: '\xEF\xBC\x89' for column 'company' at row 1]
[INSERT INTO mac_address_db_new (hex,company) VALUES('0847D0','Nokia Shanghai Bell Co. Ltd.)')]
«Плохие» символы в строке, которую я вставляю, вероятно, не дойдут до вашего браузера, поэтому вы, вероятно, не сможете увидеть символ.
Но я ищу более простое решение. Есть ли способ, которым я могу отфильтровать эти символы в PHP, прежде чем пытаться отправить их в MySQL? Я уже фильтрую следующие функции: trim( )
, mb_convert_encoding( )
(до UTF-8), htmlentities( )
, ~ некоторые функции, связанные с регистром ~, и, наконец, mysqli_real_escape_string( )
. Но все же плохие персонажи переживают. У меня нет контроля над вводом текстового файла.