【发布时间】:2016-09-23 03:39:47
【问题描述】:
您好,我购买了这个使用 sql 数据库数据的应用程序代码。英语没有问题,但我需要使用捷克语特殊符号,如 č,ř,š,ě,í,é.. 我可以在 CMS 中使用这些捷克语符号毫无问题地更改数据,但在 sql 数据库中它们是错误的(比如 é 而不是 č),当我更改数据库中的数据时,它在 CMS 中是错误的(以不同的方式 č 是?),而且它在 android 应用程序中当然也是错误的,或者它因为无法识别字符集而崩溃。我尝试解决这个问题一个多月,我在这里和谷歌上阅读了所有内容,但仍然不知道问题出在哪里。我什至手动重新创建了整个数据库,并为每个表 utf8 或 utf8mb4 手动设置。我已经尝试添加到函数
mysql_query("SET NAMES 'utf8mb4'");
或
mysql_query("SET NAMES 'utf8'");
但它的影响为零,就像我什么都没做一样
我当然把所有的php文件都改成了utf8或者utf8mb4,但是错误还是一样。我对数据库做了同样的事情。
如果我跑了
SHOW VARIABLES LIKE '%character%'
我得到了这些结果:
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/percona-server/charsets/
PHP 版本 5.4.45
感谢您的任何想法或帮助。
Update: SHOW CREATE TABLE returned:
category CREATE TABLE `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`institution_id` int(11) NOT NULL,
`programme_id` varchar(255) COLLATE utf8_bin NOT NULL,
`name` varchar(255) COLLATE utf8_bin NOT NULL,
`description` text COLLATE utf8_bin NOT NULL,
`question_time` varchar(255) COLLATE utf8_bin NOT NULL,
`limits` varchar(255) COLLATE utf8_bin NOT NULL,
`correct_ans_score` int(11) NOT NULL,
`wrong_ans_score` int(11) NOT NULL,
`expire_date` varchar(255) COLLATE utf8_bin NOT NULL,
`no_of_days` varchar(255) COLLATE utf8_bin NOT NULL,
`status` int(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
category CREATE TABLE `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`institution_id` int(11) NOT NULL,
`programme_id` varchar(255) COLLATE utf8_bin NOT NULL,
`name` varchar(255) COLLATE utf8_bin NOT NULL,
`description` text COLLATE utf8_bin NOT NULL,
`question_time` varchar(255) COLLATE utf8_bin NOT NULL,
`limits` varchar(255) COLLATE utf8_bin NOT NULL,
`correct_ans_score` int(11) NOT NULL,
`wrong_ans_score` int(11) NOT NULL,
`expire_date` varchar(255) COLLATE utf8_bin NOT NULL,
`no_of_days` varchar(255) COLLATE utf8_bin NOT NULL,
`status` int(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
【问题讨论】:
-
放弃
mysql_*API;切换到mysqli_*或PDO。
标签: php mysql encoding utf-8 collation