亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在MySQL中設置名稱UTF 8?

在MySQL中設置名稱UTF 8?

翻閱古今 2019-07-05 13:42:35
在MySQL中設置名稱UTF 8?我經常在使用MySQL的PHP腳本中看到類似于此的內容query("SET NAMES utf8");我從來沒有做過這樣的任何項目,所以我有幾個基本的問題。這是只對PDO做的事情嗎?如果不是PDO特定的事情,那么做它的目的是什么?我意識到它正在為MySQL設置編碼,但我的意思是,我從未使用過它,所以我為什么要使用它呢?
查看完整描述

3 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

手冊:

集合名稱指示客戶端將使用哪個字符集向服務器發送SQL語句。

(再一次,又一次無緣無故地從手冊):

集合名稱指示客戶端將使用哪個字符集向服務器發送SQL語句。因此,SET名稱‘cp 1251’告訴服務器,“來自此客戶端的未來傳入消息位于字符集cp 1251中。它還指定服務器用于將結果發送回客戶端的字符集。(例如,它指示如果使用SELECT語句,列值將使用哪個字符集。)


查看完整回答
反對 回復 2019-07-05
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

正確的編碼是非常棘手的-有太多的層:

  • 瀏覽器
  • PHP
  • MySQL

來自PHP的SQL命令“set charset UTF 8”將確保客戶端(PHP)將獲取UTF 8中的數據,無論它們如何存儲在數據庫中。當然,首先需要正確地存儲它們。

DDL定義與實際數據

為表/列定義的編碼并不意味著數據在這種編碼中。如果碰巧有一個表定義為utf8但是存儲為不同的編碼,那么mysql將把它們當作utf8你現在有麻煩了。這意味著你必須先解決這個問題。

檢查什么

您需要檢查每一層的數據流編碼內容。

  • 檢查HTTP頭、標頭。
  • 檢查請求正文中實際發送的內容。
  • 不要忘記MySQL幾乎在任何地方都有編碼:
    • 數據庫
    • 服務器作為一個整體
    • 客戶


      確保到處都是對的。

轉換

如果你收到的數據。windows-1250,并想要存儲在utf-8,然后在存儲之前使用此SQL:

SET NAMES 'cp1250';

如果在DB中有數據作為windows-1250想退卻utf8,使用:

SET CHARSET 'utf8';

很少有更多的注釋:

  • 不要依賴過于“聰明”的工具來顯示數據。例如,phpMyAdmin(當我使用它的時候)編碼非常糟糕。它穿過所有的層,所以很難找出。
  • 此外,InternetExplorer還存在基于奇怪規則的“猜測”編碼的愚蠢行為。
  • 在可以切換編碼的地方使用簡單的編輯器。我推薦MySQLWorkbench。


查看完整回答
反對 回復 2019-07-05
  • 3 回答
  • 0 關注
  • 485 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號