Я пытаюсь создать корзину покупок с помощью PHP и MySQL. my db в MySQL – utf8, а моя таблица в db – utf8,
Как я могу использовать символы на иврите?
Я смог решить это, выполнив следующие действия:
utf8_general_ci
utf8_general_ci
должно быть utf8_general_ci
header('Content-Type: text/html; charset=utf-8');
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
mysql_query("SET NAMES 'utf8'");
После большой работы я нашел решение, которое всегда работает ..: без SET_NAMES.
В файле conn.inc.php
после того, как вы выбрали базу данных и подключили к ней, сделайте следующее:
if(!mysqli_set_charset($conn, 'utf8')) { echo 'the connection is not in utf8'; exit(); }
… и в html всегда используйте charset utf-8;
Это решило это для меня. Не нужно использовать set_names()
, что нормально, но это меня раздражало.
Вы можете использовать PDO в своем коде следующим образом:
$db = new PDO($config['DSN'], $config['dbUserName'], $config['dbPassword']); $db->exec("SET NAMES 'utf8'");
Убедитесь, что вы включили одиночные кавычки вокруг «utf8».
Если это проблема с кодировкой (и, похоже, это так), этот запрос поможет:
SET NAMES utf8
Выполните этот запрос (например, mysql_query("SET NAMES utf8")
) сразу после подключения и перед перемещением любых данных.
Больше информации
Где появляются вопросительные знаки? Это может быть проблема кодирования где-то иначе, чем в базе данных.
Чтобы хранить символы, отличные от ASCII, в столбце базы данных, вам необходимо определить этот столбец с определенным набором символов. Вы можете указать набор символов на 3 уровнях: базу данных, таблицу и столбец. Например:
CREATE DATABASE db_name CHARACTER SET utf8 CREATE TABLE tbl_name (...) CHARACTER SET utf8 CREATE TABLE tbl_name (col_name CHAR(80) CHARACTER SET utf8, ...)
http://www.herongyang.com/PHP/Non-ASCII-MySQL-Store-Non-ASCII-Character-in-Database.html
$ Conn-> set_charset ( "utf8"); Используйте это для своего dbconnect
mysql_query('SET NAMES utf8')
….. Поместите это в Php