INSERT查询中的西里尔符号

时间:2011-06-03 21:17:06

标签: php mysql character-encoding collation

$dblocation = "localhost";
$dbname = "xx";
$dbuser = "xx";
$dbpasswd = "xx";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
mysql_select_db($dbname, $dbcnx);
mysql_query("SET NAMES utf8");
mysql_query("SET COLLATION_CONNECTION=utf8_bin"); 
$name = mysql_real_escape_string($name);
$about = mysql_real_escape_string($about);
mysql_query("INSERT INTO votes 
(name, about, active) VALUES('".$name."', '".$about."', 1 ) ") 
or die(mysql_error());

当$ name和$ about不是西里尔语时,它完全正常。但是当它是西里尔语时 - 脚本只会添加一行空白名称和字段。怎么办? DB是UTF-8,用phpMyAdmin手动添加行,西里尔符号工作完美,PHP脚本是UTF-8,一切都是UTF-8。

3 个答案:

答案 0 :(得分:3)

你应该:

1。header ("Content-Type: text/html; charset=utf-8");<meta http-equiv="content-type" content="text/html; charset=utf-8" />

2.mysql_query(“SET NAMES'utf8'”);

3.将文件的编码设置为不带BOM的utf-8

答案 1 :(得分:0)

指定与mysql_set_charset(...')的连接应使用的字符集。请参阅http://php.net/manual/en/function.mysql-set-charset.php

答案 2 :(得分:0)

我用西里尔语处理了很多事情,确实很棘手。到目前为止,根据我的经验,我没有使用任何COLLATION_CONNECTION。我所做的就是把你所有可能的文件放在utf8中。然后DB中的字段输入“utf8_unicode_ci”,我只使用SET NAMES参数来设置连接编码。这应该足够了。请注意,Set名称可能很棘手,因为只有一个空格而且不起作用。我用:

define("DBENCODING", "utf8");
mysql_query("SET NAMES '".DBENCODING."'", $this->connection);

我希望我能帮到你。