【发布时间】:2011-11-18 11:27:20
【问题描述】:
找不到我无法在 MySQL 数据库中存储 ţ、î、ş 等字符的原因。
我的表定义是:
CREATE TABLE IF NOT EXISTS `gen_admin_words_translated` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`word_id` int(10) NOT NULL,
`value` text COLLATE utf8_unicode_ci,
`lang_id` int(2) NOT NULL,
`needUpd` int(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2689 ;
与数据库的连接是通过以下脚本完成的:
$charset = "UTF8";
$link = mysql_connect($host, $user, $pass);
if(!$link){
die("Unable to connect to database server.");
}
mysql_selectdb($database);
if(function_exists("mysql_set_charset")){
mysql_set_charset($charset, $link);
}else{
mysql_query("SET NAMES $charset");
}
我在页面的头部:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
脚本是:
$text = 'ţ, î, ş';
mysql_query("insert into gen_admin_words_translated (word_id, lang_id, value, needUpd) values (1, 1, '$text', 1)");
我最后在表格中得到的是:
SELECT * FROM `gen_admin_words_translated`
id word_id value lang_id needUpd
5166 1034 ?, 1 1
【问题讨论】:
-
由于您尝试插入字符文字...您的脚本的文本编码(保存在磁盘上)是否也是 UTF-8?
-
@Jon:我该如何检查?我在服务器上运行脚本,而不是在本地运行。
-
取决于您的编辑器,但您也可以进行快速而肮脏的检查:将字符
€添加到文件中的某个位置并保存。如果文件大小改变了 1 或 2 个字节而不是 3,则说明您不在 UTF-8 上。
标签: php mysql utf-8 character-encoding