В настоящее время я работаю над проектом, и вместо обычных запросов MySQL я решил пойти дальше и научиться использовать PDO.
У меня есть таблица с именами конкурсантов, база данных, таблица и все столбцы находятся в utf-8. У меня есть десять записей в таблице участников, и их столбец "имя" содержит такие символы, как ääö.
Теперь, когда я извлекаю запись из базы данных и изменяю имя var_dump, я получаю хороший результат - строку со всеми неповрежденными специальными символами. Но мне нужно разделить строку по символам, чтобы получить их в массиве, который я затем перемешаю.
Например, у меня есть эта строка: Test ÅÄÖ Tåän
И когда я запускаю str_split, я получаю каждый символ в своем собственном ключе в массиве. Единственная проблема заключается в том, что все специальные символы отображаются следующим образом: , что означает, что массив будет выглядеть так:
Array
(
[0] => T
[1] => e
[2] => s
[3] => t
[4] =>
[5] => �
[6] => �
[7] => �
[8] => �
[9] => �
[10] => �
[11] =>
[12] => T
[13] => �
[14] => �
[15] => �
[16] => �
[17] => n
)
Как видите, он не только портит символы, но и дублирует их в процессе str_split. Я пробовал несколько способов разбить строку, но все они имеют одну и ту же проблему. Когда я вывожу строку перед разделением, она хорошо показывает специальные символы.
Это мой код dbConn.php:
//Требуется файл конфигурации: require_once ('config.inc.php');
// Start PDO connection:
$dbHandle = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf-8", $dbUser, $dbPass);
$dbHandle -> exec("SET CHARACTER SET utf8");
// Set error reporting:
$dbHandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
И это код, который я использую для извлечения из базы данных и цикла:
// Require files:
require_once('dbConn.php');
// Get random artist:
$artist = $dbHandle->query("SELECT * FROM ".ARTIST_TABLE." WHERE id = 11 ORDER BY RAND() LIMIT 1");
$artist->setFetchMode(PDO::FETCH_OBJ);
$artist = $artist->fetch();
var_dump($artist->name);
// Split name:
$artistChars = str_split($artist->name);
Я соединяюсь с utf-8, мой php файл - utf-8 без спецификации, и никакие другие специальные символы на этой странице не разделяют эту проблему. Что может быть не так или что я делаю не так?