我有这样的mysql表结构
CREATE TABLE `table_contenu` (
`id_contenu` int(10) UNSIGNED NOT NULL,
`id_rubrique` int(10) UNSIGNED NOT NULL,
`id_membre` varchar(250) NOT NULL,
`id_contenu_type` int(10) UNSIGNED NOT NULL,
`titre_fr` varchar(128) NOT NULL,
`titre_en` varchar(128) NOT NULL,
`resume_fr` text NOT NULL,
`resume_en` text NOT NULL,
`texte_fr` text NOT NULL,
`texte_en` text NOT NULL,
`date_start` date NOT NULL,
`date_end` date NOT NULL,
`calendrier` varchar(5) NOT NULL DEFAULT 'false',
`une` varchar(5) NOT NULL DEFAULT 'false',
`ordre` smallint(5) UNSIGNED NOT NULL,
`flag` varchar(5) NOT NULL DEFAULT 'true',
`date_maj` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;在我的网站上,我有一份表格可以提交数据。
我的页面上的字符集是<meta charset="utf-8">,'texte_fr‘有utf8_general_ci的搭配(我尝试了utf8_unicode_ci,但它是一样的!)
为什么当我提交单词'séances‘这个词在数据库中看起来是’‘s(C)’?
谢谢你的帮助..。
发布于 2015-12-11 15:56:44
重要的是,您的整行代码具有相同的字符集,以避免出现字符显示不正确的问题。
下面列出了一些必须设置为特定字符集的内容。
标头
header('Content-Type: text/html; charset=utf-8');
(PHP头必须放在任何类型的输出(echo、空格、HTML)之前)
连接
$handler = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET UTF8"));$mysqli->set_charset("utf8");
*程序:mysqli_set_charset($mysqli, "utf8");
(其中$mysqli是MySQLi连接)mysql_set_charset("utf8");
数据库
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;File-encoding
.php文件本身是UTF-8编码的。如果使用Notepad++编写代码,则可以在任务栏上以“格式”下拉方式完成。您应该使用字符集UTF-8 w/o BOM。您还可以看看这个StackOverflow帖子:UTF-8 all the way through。
https://stackoverflow.com/questions/34227457
复制相似问题