只是一个简单的问题。我在我的 MySQL 数据库和 HTML 文件中都使用 UTF-8 作为标准。我不明白的一件事是,为什么在 SQL 中显示的字母与我键入时不同。我确信在使用 UTF-8 时,它的放置方式应该与我编写它的方式完全相同。
是否有一个类或其他东西可以自动将所有发布的数据保存在 UTF-8 中,然后按原样发布?
您的文本编辑器也会影响您的字符编码。请务必使用可以将字符编码设置为 UTF-8 的文本编辑器或 IDE。
我的解决方案
如果有人遇到类似的问题,我的解决方法是在 PDO 连接之后添加此行, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")
。
现在连接字符串如下所示:
$conn = new PDO('mysql:host=localhost;dbname=$dbname', $username, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
如果不成功,请尝试 1. 方法 2.metod。最后一种方法我说用 notepad2 编辑器打开 HTML 文件并将编码从文件菜单更改为 UTF8 并保存。我认为这将是解决方案;
$dsn = $config ["驱动程序"] 。':dbname=' 。$config ['dbname'] 。';主机='。$config ['主机']; . ';charset=UTF-8'; //---> 这是解决方案 尝试 { $this->link = new PDO ($dsn, $config ['user'], $config ['pass'] ); // mysql 驱动程序忽略 $dsn 中的字符集指令(是的,这很糟糕) if ($config ["driver"] == 'mysql') $this->link->exec("set names utf8"); } 捕捉(PDOException $e){ die ("Hata var :" . $e->getMessage () ); }
其他:
$encodings = array("windows-1254","utf-8", "iso-8859-9" ); $data = file_get_contents($TempSrc); $data=mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data, $encodings));