我有一个像这样的
的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;
在我的网站上,我有一个提交数据的表单
我页面上的Charset是<meta charset="utf-8">
和'texte_fr'有搭配utf8_general_ci(我试过utf8_unicode_ci,但它是一样的!)
为什么当我提交“séances”这个词时,这个词在数据库中看起来是“ s?ances ”?
感谢您的帮助......
答案 0 :(得分:1)
您的整个行代码具有相同的字符集以避免字符显示不正确的问题非常重要。
这里列出了一些必须设置为特定字符集的内容。
<强>接头强>
header('Content-Type: text/html; charset=utf-8');
<强>连接强>
$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");
<强>数据库强>
您的数据库及其所有表格必须设置为UTF-8。请注意,charset 不与归类相同。
您可以通过为每个数据库和表格运行一次下面的查询(例如在phpMyAdmin中)来实现这一目标
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
文件编码的 强>
.php
文件本身是UTF-8编码也很重要。如果您使用Notepad ++编写代码,可以在&#34;格式&#34;下拉任务栏。您应该使用charset UTF-8 w/o BOM
。您还可以查看此StackOverflow帖子:UTF-8 all the way through。