Кодировка PHP (думаю, UTF-8) - PullRequest
       4

Кодировка PHP (думаю, UTF-8)

0 голосов
/ 11 ноября 2010

Я программирую систему, чтобы пользователь мог редактировать то, что он публикует. Упрощенно, это поле ввода / ввода текста, которое хранится в базе данных и на странице, которая его получает. Проблема в том, что я думаю, что кодировка не в порядке, потому что строки хранятся в базе данных, как «Ã ©» или что-то в этом роде (вид phpmyadmin).

Вставить страницу:

  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  2. Вставляю mysql_real_escape_string($_POST['field']);

Страница вывода:

  1. Объект из базы данных.
  2. htmlspecialchars($object->field);

Но ожидается: Выходная страница:

  1. Объект из базы данных.
  2. htmlentities($object->field);, верно?

Почему данные в MySql хранятся неправильно?

Ответы [ 4 ]

4 голосов
/ 11 ноября 2010

Если кодировка вашей базы данных установлена ​​в utf-8, вам также необходимо установить кодировку передачи в utf-8.Для этого вам нужно запросить

SET NAMES utf8;

перед вставкой в ​​таблицу.

2 голосов
/ 11 ноября 2010

Является ли база данных соединение UTF-8? Имейте в виду, что это не кодировка по умолчанию, вы должны явно установить ее самостоятельно.

1 голос
/ 11 ноября 2010

Вы должны сказать htmlentities, что вы кормите его UTF-8:

htmlentities($text, ENT_COMPAT, "UTF-8");

В противном случае предполагается, что он получает ISO-8859-1.

0 голосов
/ 11 ноября 2010

Этот сайт http://developer.loftdigital.com/blog/php-utf-8-cheatsheet должен дать вам представление о том, что нужно для UTF-8 в PHP и MySQL.

Да, и не забудьте использовать их после подключения к вашей БД:

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...