[英]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.