$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。
答案 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);
我希望我能帮到你。