У меня проблема с кодировкой PHP.
У меня есть страница JavaScript / jQuery HTML5, взаимодействующая с моим PHP-скриптом с использованием $ .post.
Однако PHP сталкивается со странной проблемой, вероятно, связанной с кодированием.
Когда я пишу
htmlentities("í")
Я ожидаю, что PHP выведет í
. Однако вместо этого он выдает í
Вначале я думал, что ошибаюсь с кодировками, однако
htmlentities("í")=="í"?"Good":"Fail";
выводит «Fail», где
htmlentities("í")=="í"?"Good":"Fail";
Но htmlentities($search, null, "utf-8")
работает как положено.
Я хочу, чтобы PHP общался с сервером MySQL, но у него тоже есть проблемы с кодировкой, даже если я использую utf8_encode. Что мне делать?
РЕДАКТИРОВАТЬ: В команде SQL, написание
SELECT id,uid,type,value FROM users,profile
WHERE uid=id AND type='name' AND value='XXX';
, где XXX не содержит символов í, работает как положено, но не работает, если есть символ 'í'.
SET NAMES 'utf8';
SET CHARACTER SET 'utf8';
SELECT id,uid,type,value FROM users,profile
WHERE uid=id AND type='name' AND value='XXX';
Не только сбой для символов, но также сбой для строк без каких-либо «специальных» символов.
Удаление символов 'из SET NAMES и SET CHARACTER SET, похоже, ничего не меняет.
Я подключаюсь к базе данных MySQL, используя PDO.
РЕДАКТИРОВАТЬ 2: Я использую MySQL версии 5.1.30 XAMPP для Linux.
РЕДАКТИРОВАТЬ 3: Запуск SHOW VARIABLES LIKE '%character%'
с выходов PhpMyAdmin
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /opt/lampp/share/mysql/charsets/
Выполнение того же запроса из моего PHP-скрипта (с print_r) выводит:
Array
(
[0] => Array
(
[Variable_name] => character_set_client
[0] => character_set_client
[Value] => latin1
[1] => latin1
)
[1] => Array
(
[Variable_name] => character_set_connection
[0] => character_set_connection
[Value] => latin1
[1] => latin1
)
[2] => Array
(
[Variable_name] => character_set_database
[0] => character_set_database
[Value] => latin1
[1] => latin1
)
[3] => Array
(
[Variable_name] => character_set_filesystem
[0] => character_set_filesystem
[Value] => binary
[1] => binary
)
[4] => Array
(
[Variable_name] => character_set_results
[0] => character_set_results
[Value] => latin1
[1] => latin1
)
[5] => Array
(
[Variable_name] => character_set_server
[0] => character_set_server
[Value] => latin1
[1] => latin1
)
[6] => Array
(
[Variable_name] => character_set_system
[0] => character_set_system
[Value] => utf8
[1] => utf8
)
[7] => Array
(
[Variable_name] => character_sets_dir
[0] => character_sets_dir
[Value] => /opt/lampp/share/mysql/charsets/
[1] => /opt/lampp/share/mysql/charsets/
)
)
Запуск
SET NAMES 'utf8';
SET CHARACTER SET 'utf8';
SHOW VARIABLES LIKE '%character%'
выводит пустой массив.