2016-08-25 96 views
2

我試圖在我的網站內顯示非常特殊的字符(如),並將其存儲到我的數據庫中。 當我寫這些特殊字符時,它們會顯示一次,但是當我重新加載頁面並且服務器從數據庫獲取字符串時,它會顯示爲「??????? ???????? ??????「 我試圖做很多事情來解決這個問題,但他們都沒有工作。 這不是一個可視化的問題,因爲頭被設置正確:MySQL數據庫存儲問號而不是特殊字符

<meta charset="utf-8"> 

我曾嘗試做:

  • 服務器的默認字符集設置爲UTF-8。
  • 設置數據庫/表/列崩潰和字符集來utf8mb4_unicode_ci
  • 更改連接字符串:
$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 

$db->query("SET character_set_results=utf8mb4"); 

mb_language('uni'); 

mb_internal_encoding('UTF-8'); 

$db->query("SET NAMES utf8mb4"); 

$db->set_charset('utf8mb4'); 

但沒有這種事情的來龍去脈。 作爲補充,我想(只是用於調試)在數據庫中的文本字段來改變一個字符串,我得到了一個錯誤:

Warning: #1300 Invalid utf8 character string: 'F09D91'

Warning: #1366 Incorrect string value: '\xF0\x9D\x91\xBB\xF0\x9D...' for column 'text' at row 1

我試過真的每一個解決方案,我發現這裏和outsite,但沒有工作。 任何幫助,將不勝感激。

+2

該文件的編碼本身呢? –

+0

我應該檢查哪些文件? –

+0

所有這些。如果您不知道如何檢查文件的編碼,請獲取代碼編輯器,然後查看「編碼」下的含義。 –

回答

3

正如評論中所述。

在很多情況下,你需要將所有在該行之前以下
$db->query("SET character_set_results=utf8mb4");的代碼。

另外使用不同的文件編碼也可以幫助。

以前我不得不這樣做,很奇怪。它也可能是服務器的默認編碼,可能在某處重寫某個內容;我也有過這個問題。

另外,如果您在查詢某個地方,如執行SELECT,UPDATE或INSERT,那麼它是重要編碼代碼放置在查詢之前,應該是這種情況。

+0

謝謝你,這個伎倆。 ü救了我失眠和時間浪費。 –

+0

@SimoneVenturas你是最受歡迎的Simone,我知道「那種感覺太好了,*歡呼聲* –

+0

$ db-> query(」SET character_set_results = utf8mb4「);在那條線之前。 「那條線」?哪一行? – VishalParkash

相關問題