2012-11-22 52 views

回答

10

有你需要考慮幾件事情:

  1. 檢查在數據庫中的數據被存儲爲UTF-8
  2. 檢查客戶端連接到數據庫是UTF-8(用於例如,在mysql中看到:http://www.php.net/manual/en/mysqli.character-set-name.php
  3. 確保頁面的內容類型設置爲UTF-8 [你可以使用header('Content-Type:utf-8'); ]
  4. 嘗試設置內部編碼,使用mb_internal_encoding(「UTF-8」);

心連心

+0

+1提及數據庫編碼和' mb_internal_encoding' –

+0

......正如在其他兩個答案中提到的,您應該使用'mb_substr' –

+0

mb_internal_encoding(「UTF-8」); - 工作正常!謝謝! –

21
$first_char = mb_substr($title, 0, 1); 

您需要使用PHP的多字節字符串函數正確處理Unicode字符串:

http://www.php.net/manual/en/ref.mbstring.php

http://www.php.net/manual/en/function.mb-substr.php

您還需要指定的<head>的字符編碼您HTML:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

或:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-16" /> 
+2

回聲mb_substr($標題,0,1); 結果: –

+0

mb_substr不起作用 –

+0

你可以在這裏發佈完整的字符串嗎? –

4

PHP字符串不明白默認字節字符串,像索引數組將印章的第一個字節,如果這種情況發生不是在你得到這個結果ASCII範圍。使用mb_substr方法。

8

正如先前在其他問題中提到,使用PHP,試圖獲取子的時候,它不理解多字節字符(如你用UTF8例如獲得)。

什麼其他的答案不提的是,你應該提示你想使用的mb_substr

因此,編碼,例如,我用這個:

mb_substr("Sunday", 0, 1,'UTF8'); // Returns S 
mb_substr("воскресенье", 0, 1,'UTF8'); // Returns в 
+0

沒有'UTF8'參數沒有爲我工作。謝謝! – PiTheNumber

相關問題