php - 俄语西里尔文文本存入数据库

标签 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));

最佳答案

请尝试

$con->exec("SET NAMES = utf8");

创建 PDO 对象后。

您的数据库以这种方式存储此内容是正常的。 尝试检查你的MySQL客户端,能否正常显示UTF-8数据库数据。

我知道某些版本的 SQLYog 不能,例如旧版本的 PHPMyAdmin

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

它可能对你有帮助。

谢谢。

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

关于php - 俄语西里尔文文本存入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18056815/

相关文章:

php - 检查输入是否与数组中的当前显示项匹配 php

php - 向多个用户发送 Firebase 通知

php - 出现错误 SQLSTATE[HY000] [2002] NAS Synology 上的连接被拒绝

windows - 如何以编程方式向该对话框添加项目?

php - 通过 PHP 连接到权限较低的 MySQL 用户

php - 根据相关 id 列将第二个二维数组中的数据添加到第一个二维数组中

sql - 为什么我不能在 SQL Server 表中插入小数?

SQL在没有键的情况下将一列更新为最大值

java - 如何在 JTextPane 中围绕组件包装文本?

c - 在C中单链的后面插入