Я перепробовал все возможные решения, перечисленные в SOF, но у меня не работает ни одно решение (возможно, я делаю что-то неподходящее) . Недавно я обновил свою инфра-инфраструктуру, обновил ее с PHP 5 до PHP 7, а затем запустил проблему, старая инфра-инфраструктура по-прежнему отображала все китайские иероглифы, но не проблема, но на PHP 7 у меня проблема. На нем отображаются только вопросительные знаки и несколько китайских символов, например 广?????运货运代?????????????????司
MariaDB
'character_set_client','utf8'
'character_set_connection','utf8'
'character_set_database','utf8'
'character_set_filesystem','binary'
'character_set_results','utf8'
'character_set_server','utf8'
'character_set_system','utf8'
'character_sets_dir','c:\\mariadb\\share\\charsets\\'
Данные таблицы MariaDB
'4181','é“甲兵户外','TB0001',NULL,'2016-06-04 18:21:35',NULL,NULL
'4188','é“甲兵户外','TB0001',NULL,'2016-06-04 18:24:20',NULL,NULL
'4221','é“甲兵户外(TB0001)','TB0001',NULL,'2016-06-05 05:09:49','2016-08-24 06:54:57',NULL
'204424','广州凌è¿è´§è¿ä»£ç†æœåŠ¡æœ‰é™å…¬å¸',NULL,NULL,'2019-07-09 00:13:43','2020-02-19 10:08:21',NULL
Таблица определения Maria DB
CREATE TABLE `companies` (
`entity_id` int(11) NOT NULL,
`name` varchar(100) NOT NULL,
`reg_no` varchar(30) DEFAULT NULL,
`website_url` varchar(100) DEFAULT NULL,
`created` datetime NOT NULL,
`updated` datetime DEFAULT NULL,
`external_id` varchar(100) DEFAULT NULL,
PRIMARY KEY (`entity_id`),
KEY `fk_companies_1_idx` (`entity_id`),
FULLTEXT KEY `ft_1` (`reg_no`),
CONSTRAINT `FK_8244AA3A81257D5D` FOREIGN KEY (`entity_id`) REFERENCES `entities` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
PHP 7 Вход
header('Content-type: text/html; charset=utf-8');
$conn = new mysqli($host, $username, $password, $dbname) or die("Connect failed: %s\n". $conn -> error);
$query = "SELECT * FROM companies where entity_id = 4188";
$result = $conn->query($query);
$row = mysqli_fetch_assoc($result);
$name = $row["name"];
echo "\n";
echo $name;
echo "\n";
echo utf8_decode($name);
echo "\n";
echo iconv('UTF-8', 'ISO-8859-1', $name);
echo "\n";
echo mb_convert_encoding($name, 'ISO-8859-1', 'UTF-8');
echo "\n";
echo utf8_decode($name);
PHP 7 Выход
é“甲兵户外
??????????????
??????????????
??????????????
Это мой старый инфра
PHP 5 Вход
header('Content-type: text/html; charset=utf-8');
$conn = new mysqli($host, $username, $password, $dbname) or die("Connect failed: %s\n". $conn -> error);
$query = "SELECT * FROM companies where entity_id = 4188";//204424";
$result = $conn->query($query);
$row = mysqli_fetch_assoc($result);
$name = $row["name"];
echo $name;
PHP 5 Вывод
铁甲兵户外
На обоих интерфейсах я использую одну и ту же базу данных, но как-то на старой инфраструктуре вывод в порядке без какого-либо преобразования utf или латинский.