2015-12-12 23 views
0

首先,感謝您花時間看這個。從我的數據庫表中的文字被印有問號或像C,E,E,I,U,U,Z等符號...PHP - UTF-8字符顯示爲?和

我已經試過:

  • 在我的php.ini中設置default_charset "utf-8"
  • 設置元標記。
  • 在字符串上使用mb_detect_encoding($mystring, "UTF-8, iso-8859-1, iso-8859-2)返回iso-8859-1。但我的數據庫中的排序規則設置爲utf8。文本中的符號應該是UTF8(立陶宛語)。
  • 將字符集設置爲iso-8859-1或iso-8859-2在php.ini中加載了一些符號,但仍然有很多是符號,儘管黑色方塊消失了。我也用Windows-1252,沒有幫助。
    • 我也在Notepad ++中檢查了encodin文件,它們看起來是沒有BOM的UTF-8。

enter image description here

如果我這樣做文完全消失:

iconv('ISO-8859-1','UTF8',$string) 

我跑出做什麼想法,幫助我。我會提供更多我可以提供的信息。

+0

如果你使用的PDO,你有沒有試過'新PDO($ DSN,$用戶,$通行證,[PDO :: MYSQL_ATTR_INIT_COMMAND => 「組名稱UTF8」])' ? – Kenney

+0

正在打印哪裏?一個網頁?一個控制檯? – pvg

+0

@pvg一個網站,對不起。 – Mantas

回答

0

請使用

/* change character set to utf8 */ 
if (!mysqli_set_charset($mysqli, "utf8")) 
{ 
    printf("Error loading character set utf8: %s\n", mysqli_error($mysqli)); 
    exit(); 
} 
else 
{ 
    //printf("Current character set: %s\n", mysqli_character_set_name($mysqli)); 
} 
+0

請您詳細解答這個問題嗎?我對PHP很陌生,所以有點混亂。 – Mantas

+0

這段代碼應該使用你的配置文件,就是這樣。希望你的幫助。 –

+0

set_charset()是在PHP中使用utf8的必要步驟之一。這通知MySQL PHP中的字節將被utf8編碼。當INSERTing和SELECTING與表中的CHARACTER SET相匹配時,MySQL會轉換(如有必要)。 (通常,這也是utf8。) –