2016-08-13 75 views
1

我創建了一個具有UTF-8數據庫字符集的應用程序。當使用PHP創建連接時,我正在執行mysqli_query($link, 'SET CHARACTER SET utf8')UTF-8使用MYSQL插入查詢無法在部署服務器上工作

這是對本地主機工作罰款既SELECTINSERT等我上部署的Web應用程序的一些樣本數據,並快速瀏覽網頁,我看到UTF-8字符很好。

第二天,客戶打電話過來的數據顯示像??????當我通過提供接口添加一些記錄我很驚訝,他是對的,但 localhost上它是工作的罰款。

經過一番搜索,我發現多個答案喜歡執行這些查詢

  • set character_set_client='utf8'
  • set character_set_results='utf8'
  • set collation_connection='utf8_general_ci'
  • SET NAMES 'utf8'
  • 和設置,然後響應等
編碼

沒有人工作但這mysqli_set_charset($link, 'utf8')之一。

我的問題是

  1. 爲什麼這是工作在本地主機上,並且只INSERT or UPDATE查詢被部署後產生的問題,但SELECT工作正常
  2. 是什麼mysqli_set_charset($link, 'utf8')mysqli_query($link, 'SET CHARACTER SET utf8')
+1

請閱讀[這個優秀的答案](http://stackoverflow.com/a/279279/3536236) – Martin

+0

另一個[_excellent answer_](http:// stackoverflow。 com/questions/26596294/set-names-vs-mysqli-set-charset -other-affecting-mysqli-escape-string-are/37947771#37947771) –

+0

[_This_](http://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-i-stored)表示,「問號」是由於沒有使用utf8文本和'CHARACTER SET utf8'引起的。 –

回答

0
之間的區別

您的localhost數據庫可能已經使用utf8歸類設置,但遠程Web服務器的數據庫設置不正確。

基於本地主機開發的替代方案是使用流浪虛擬機。您可以儘可能將其設置爲與生產密切相關。

mysqli_set_charset確實不止設置客戶端字符集。見https://secure.php.net/manual/en/mysqlinfo.concepts.charset.php這是從手冊頁鏈接到mysqli_set_charset

+0

我查了兩個都是'utf8' –

+0

我還沒有發現mysqli_set_charset('utf8')'重要的字符。 –

相關問題