簡體   English   中英

UTF-8編碼問題

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM