Экранирование символов перед вставкой в базу данных

0

Я хочу преобразовать некоторые символы, прежде чем вставлять их в базу данных, например

Ž, Ć

Я получаю данные с поста и дезинфицирую их на этом

$ime =  (string) htmlentities(mysql_real_escape_string($data['txtIme']), ENT_COMPAT,'UTF-8', true);

По какой-то причине я получаю еще Ž, Š в свою базу данных

  • 0
    Не надо, вы в конечном итоге попадете в ужасный беспорядок: stackoverflow.com/questions/279170/utf-8-all-the-way-through
  • 0
    Почему вы хотите их закодировать? В вашей базе данных нет правильного набора символов?
Теги:

2 ответа

1
Лучший ответ

С http://php.net/manual/en/function.htmlentities.php

все символы, имеющие эквиваленты символов символа HTML, переводятся в эти объекты

Если вы посмотрите на http://www.ascii.cl/htmlcodes.htm

Ž, Ć не имеют эквивалентов символов символа HTML. Š делает. Вот почему

<?php
     $string = 'In some reason I get still Ž, Š, Ć into my database';
     echo htmlentities($string, ENT_COMPAT,'UTF-8', true);
?>

Производит:

$ php utf.php
In some reason I get still Ž, &Scaron;, Ć into my database
1

В зависимости от того, к чему вы хотите преобразовать, mysql_set_charset() может использовать функцию, которую вы должны использовать. Используя кодировку UTF-8, вы также можете хранить большинство нестандартных символов.

Однако вы должны быть осторожны с расширением mysql, поскольку он устарел. Вместо этого вы должны взглянуть на mysqli или PDO.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню