俄罗斯西里尔文本进入数据库

时间:2013-08-05 11:14:41

标签: php sql insert cyrillic

编辑/更新代码:
这解决了我的问题。

$con = new PDO("mysql:host=$hostname;dbname=XXXXX;charset=utf8", $dbusername, $dbpassword, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 

我正在尝试将一些西里尔文本输入我的数据库。 PHP脚本连接正常并将数据添加到数据库。问题是,当表格提交西里尔文本时,在数据库中输入西里尔字符,就像这样“Ñ€Ñ,Ñ'ÐÐÐÐÐÐÐÐÐÐ~~~ >

任何帮助都会很棒,谢谢。

数据库排序规则设置为“utf8_general_ci”。 php文件保存为“uft8”(hostgator主机 - 如果有帮助的话)。

我在页面顶部有这个。

<?php header("Content-Type: text/html; charset=utf-8"); ?>

我已将此添加到我的文件标题中:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

与数据库的连接如下:

$con = new PDO("mysql:host=$hostname;dbname=XXXXX;charset=utf8", $dbusername, $dbpassword); 

表格示例:

<form name="form" id="form" action="/form.php" method="post" accept-charset="utf-8">
<input type="hidden" name="foo" id="foo1" value="<?php echo $foo1; ?>"><?php echo $foo1; ?>   
<input type="hidden" name="bar" id="bar1" value="<?php echo $bar1; ?>"><?php echo $bar1; ?>  
<input type="submit" id="submit" value="submit"/>

* * php在页面上正确回应俄语文本。

我的PHP SQL插入示例:

 $sql = "INSERT INTO foobar (foo1,bar1) VALUES (:foo1,:bar1)";
   $q = $con->prepare($sql);
   $q->execute(array(':foo1'=>$foo1, 
             ':bar1'=>$bar1));

1 个答案:

答案 0 :(得分:3)

请尝试

$con->exec("SET NAMES = utf8");
创建PDO对象后

通常情况下,您的数据库以这种方式存储此内容。 尝试检查您的MySQL客户端,它是否可以正确显示UTF-8数据库数据。

我知道某些版本的SQLYog无法实现,例如旧版本的PHPMyAdmin

我敢打赌,当您从脚本中获取数据时,您将收到正确的数据。 如果不是 - 尝试使用“SET NAMES”,正如我已经说过的那样。

它可能对你有帮助。

感谢。

另外,请查看PHP PDO: charset, set names?