2017-06-29 82 views
1

我在本地web服務器上有一個項目,所有文件都是UTF-8,也是UTF-8的sqlite數據庫,可以用德文字母a,o,u帶點(變音符號),但是在託管它們時,如果我有不同的編碼類型的文件是確定的,但它不適用於託管,爲什麼?爲什麼編碼改變了?

header('Content-Type: text/html; charset=utf-8'); 
require("dbconnect.php"); 
... 

    $sql = "SELECT * FROM customers ORDER BY CREATED " . $order . " LIMIT(10)"; 
    $query = $dbo->prepare($sql); 
    $query->execute(); 
    $result = $query->fetchAll(); 
    renderTable($result); 

... 

function renderTable($queryResult) { 
... 
echo "<td>",ucwords(strtolower($row['CUSTNAME'])),"</td>"; 
... 

On hosting and on test server

+0

那麼,我會首先檢查主機數據庫是否使用相同的編碼,檢查特定的數據庫表,如果它存儲爲「o」或「?」。你也初始化一個數據庫連接爲UTF-8? –

+0

首先檢查整個託管是否使用該編碼。也許嘗試聯繫你的主機關於這個問題,因爲你運行所有的UTF-8並且在你自己的主機上檢查它。 – hakre

+0

@AntonisTsimourtos商店作爲o,主機不是我的,所以不能檢查,是否有一些解決方案,以設置所有與htaccess? –

回答

0

有你在dbconnect.php試過這種

$dpo->exec("set names utf8"); 
+0

是的,它在dbconnect.php'code'try $ dbo = new PDO(「sqlite:../ data/clients.db」); $ dbo-> query(「SET NAMES'utf8'」); $ dbo-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION); } catch(PDOException $ e){ echo $ e-> getMessage(); '代碼' –

+0

這不是一個SQLite命令。 –

+0

你試過這一切嗎? https://www.toptal.com/php/a-utf-8-primer-for-php-and-mysql 我之前遇到過這個問題,用越南語做了很多事情來修復它 –

0

感謝所有,這是一個用strtolower內置功能,我用它來蓋的姓名改爲一般,和對於Unicode的建議使用mb_strtolower

相關問題