我的页面编码设置为utf8
,甚至在元标记中设置为utf8
。
但是,当我从数据库中获取一个值时,它会使用问号代替钻石 - 我假设不知道该字符。
角色是é。如果我做回声é
;它在页面上显示为正常。如果我用html手动编写它。但是,当我使用PDO从数据库调用中获取相同的值时,我得到一个
我假设它是PDO设置。我试过了:
$db->exec("SET NAMES 'utf8';");
但这并没有解决它。
有什么建议吗?
答案 0 :(得分:2)
路上很多事情都可能出错。通常,您需要使用utf-8编码源文件,并使用utf-8打开数据库连接并将数据库表定义为utf-8。
来自@deceze的一篇很棒的文章帮我澄清了事情http://kunststube.net/frontback/。
您可以尝试的最明显的事情是:
使用utf8选项创建PDO连接:
$connection = new PDO('mysql:host='.$this->host.';dbname='.$this->db_name.';charset=utf8', $this->user, $this->pass,array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
确保您的表格是utf-8编码的,并且您的表单有以下选项:
< form action =“action.php”accept-charset =“utf-8”>
更新:也许utf8_encode解决了你的问题,但是从PHP到数据库的某个地方出现了错误的转换。或错误的文件编码。你应该修复问题的根源,不再需要utf8_encode了。