#php #mysql #encoding #utf-8 #foreign-keys
#php #mysql #кодирование #utf-8 #внешние ключи
Вопрос:
Недавно я преобразовал свою базу данных в UTF-8, как и должно было быть в первую очередь. Все выглядит нормально, за исключением случаев, когда я использую функцию
echo mb_detect_encoding($_POST['province']);
Я получаю ASCII для всего, что не содержит специальных символов, и я получаю UTF-8 для всего, что содержит. Однако все эти значения извлекаются из самой базы данных, поэтому это сбивает меня с толку. Так ли это должно работать?
Еще одна вещь, которая не работает, — это мое ограничение внешнего ключа; Я не могу ввести значения из выпадающего списка, который снова извлекает значения из базы данных, поэтому.
Когда я использую
echo mb_detect_encoding($_POST['province']);
echo $_POST['province'];
Я получаю
UTF-8
Galápagos
Который я не могу ввести в базу данных в таблице отчетов из-за ограничения внешнего ключа в таблице провинций. Однако значение поступает непосредственно из таблицы провинций. Я здесь схожу с ума.
Однако я получаю
ASCII
Carchi
Для другой провинции в Эквадоре, и это значение попадает прямо в базу данных. Что я здесь делаю не так?
Ответ №1:
Это может быть случай, когда требуется правильно установить кодировку клиента. Попробуйте это после первоначального подключения к mysql:
mysql_query("SET NAMES 'utf8'")
Комментарии:
1. Спасибо 🙂 Это сделало это! Должен ли я помещать это везде, где я обращаюсь к базе данных? Вставка в базу данных? Чтение из него?
2. А, я понимаю, что вы имели в виду. Я просто поместил это на свой connect.php страница, поэтому она напоминает клиенту каждый раз. Круто, спасибо 8)