今天幫同事處理一個(gè)棘手的事情,問題是這樣的: 無(wú)論在客戶機(jī)用哪個(gè)版本的mysql客戶端連接服務(wù)器,發(fā)現(xiàn)只要服務(wù)器端設(shè)置了 character-set-server = utf8 之后, character_set_client、character_set_connection、character_set_results 就始終都是和服務(wù)器
今天幫同事處理一個(gè)棘手的事情,問題是這樣的:
無(wú)論在客戶機(jī)用哪個(gè)版本的mysql客戶端連接服務(wù)器,發(fā)現(xiàn)只要服務(wù)器端設(shè)置了
character-set-server = utf8之后,
character_set_client、character_set_connection、character_set_results就始終都是和服務(wù)器端保持一致了,即便在mysql客戶端加上選項(xiàng)
--default-character-set=utf8也不行,除非連接進(jìn)去后,再手工執(zhí)行命令
set names latin1,才會(huì)將client、connection、results的字符集改過來(lái)。
經(jīng)過仔細(xì)對(duì)比,最終發(fā)現(xiàn)讓我踩坑的地方是,服務(wù)器端設(shè)置了另一個(gè)選項(xiàng):
skip-character-set-client-handshake文檔上關(guān)于這個(gè)選項(xiàng)的解釋是這樣的:
--character-set-client-handshake Don't ignore character set information sent by the client. To ignore client information and use the default server character set, use --skip-character-set-client-handshake; this makes MySQL behave like MySQL 4.0這么看來(lái),其實(shí)也是有好處的。比如啟用skip-character-set-client-handshake 選項(xiàng)后,就可以避免客戶端程序誤操作,使用其他字符集連接進(jìn)來(lái)并寫入數(shù)據(jù),從而引發(fā)亂碼問題。
本條目發(fā)布于2013/10/29。屬于數(shù)據(jù)庫(kù)分類,被貼了 charset、MySQL、字符集 標(biāo)簽。作者是yejr。 2013年Oracle技術(shù)嘉年華聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com