[英]UTF-8 encoding problems
我有一个站点,该站点在MySQL DB中存储西班牙语字符。 所有表和数据库均已配置为UTF-8,并且据我所知,它们已完全加载到我的本地WAMP设置和托管帐户服务器中。
西班牙语字符在本地完美显示,但在实时服务器上,重音符号显示了可怕的问号符号。 仅影响从数据库动态生成的文本,因此可以合理地假设这与我的查询,连接或数据库以某种方式相关。
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<select multiple class='form-control' name='location[]' id='location'>
encoding: UTF-8<option value='Alhaur�n de la Torre'>Alhaur�n de la Torre</option>
encoding: ASCII<option value='Artola'>Artola</option>
encoding: ASCII<option value='Bel Air'>Bel Air</option>
使用mb_detect_encoding(),我的下拉菜单如上所述。
我的标题包含:
header('Content-type: text/html; charset=utf-8');
表的数据库为utf8_general_ci,服务器连接排序规则,服务器字符集为UTF-8 Unicode(utf8)
我在PDO DB连接中使用了SET NAMES utf8。
这让我发疯,为什么它在本地却不能在我的托管服务器上工作。 经过大量寻找答案后,我希望在这里提供一些指导。
提前致谢
解决了:
在我的连接脚本中,我对此进行了更改:
$dbh = new PDO("mysql:host=$dbHost;dbname=$dbName;", $dbUser, $dbPass);
$dbh->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');
对此:
$dbh = new PDO("mysql:host=$dbHost;dbname=$dbName;", $dbUser, $dbPass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
一切都应有的工作。
谢谢看
解决了:
在我的连接脚本中,我对此进行了更改:
$dbh = new PDO("mysql:host=$dbHost;dbname=$dbName;", $dbUser, $dbPass);
$dbh->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');
对此:
$dbh = new PDO("mysql:host=$dbHost;dbname=$dbName;", $dbUser, $dbPass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
一切都应有的工作。
谢谢看
$dbh = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=UTF8", $dbUser, $dbPass);
将字符集添加到pdo连接中!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.