日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql vim 退不出_字符集问题之 MySQL, Linux终端, vim

發(fā)布時(shí)間:2024/1/23 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql vim 退不出_字符集问题之 MySQL, Linux终端, vim 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、MySQL 與 set names 有關(guān)的三個(gè)變量:

1. character_set_client:只是用來(向MySQL服務(wù)器)說明客戶端使用的sql語句采用的是什么編碼,并不會(huì)進(jìn)行轉(zhuǎn)換。

2. character_set_connection:見MySQL文檔。

3. character_set_result:見MySQL文檔。

值得注意的是另外兩個(gè)變量:

character_set_server 與?character_set_database:他們是用來指示MySQL最終以什么樣的編碼把數(shù)據(jù)存到磁盤上,這時(shí)會(huì)做必要的變換(這一點(diǎn)從實(shí)踐中得出,MySQL文檔中未提到)。其他信息見MySQL文檔。

二、character_set_client只起到標(biāo)示的作用,而且標(biāo)示得不一定對。那么我客戶端的編碼究竟是什么?

分三個(gè)情景:

1. 在終端中直接寫上SQL語句,如 insert into tb_temp(null, "情景一"); ?這里語句的編碼是由locale決定的,通過LANG設(shè)置。locale 決定了鍵盤的輸入和終端的顯示(這里的“顯示”,因理解為終端的輸出緩存里的字符的編碼)(在某終端里設(shè)置,只對該終端有效)。比如,LANG=zh_CN.gbk,那么語句是gbk編碼的;LANG=zh_CN.utf8,那么語句是utf8編碼的。如果輸入到終端的是亂碼,那么是 locale的設(shè)置 和 終端上的用來解析輸出緩存里的字符的編碼不一致。

這里順便提到VIM。有時(shí)在VIM中會(huì)遇到亂碼的情況。encoding變量默認(rèn)情況下與locale的設(shè)置相同。說明文檔(:set encoding-names 查看)指出,如果這兩者不一致,vim會(huì)幫我們轉(zhuǎn)換。前提是你要裝好libiconv。不然除了不會(huì)給你自動(dòng)轉(zhuǎn)換,而且一些字符集如gb2312它會(huì)提示沒有。在VIM命令模式下,使用set fenc? 來查看當(dāng)前文件的編碼。用“set fenc=” 可將文件設(shè)置成另一種編碼,這也需要libiconv的支持。

我的.vimrc文件內(nèi)容如下:

*****************************

set nu

set tabstop=4

set encoding=utf8

set fileencoding=utf8

set fileencodings=utf8,chinese,Latin1

*********************************

若不設(shè)置fileencodings(工作原理見說明文檔),vim中默認(rèn)fileencodings=ucs-bom,utf-8,latin1。這樣的情況下,你的gbk文件在vim是亂碼的,因?yàn)楸划?dāng)成Latin1編碼來顯示。fileencoding是用來指定你創(chuàng)建一個(gè)文件時(shí)所用的編碼。(顯然,若不設(shè)置fileencoding,那么新建的文件會(huì)保存成encoding指定的格式)。fileencoding需要與fileencodings配合使用才行。

這樣設(shè)置好后,便能在LANG=zh_CN.utf8的情況下,編輯gbk以及其他格式的文件。

2.在console里粘貼數(shù)據(jù)

這種情況下,粘貼進(jìn)的數(shù)據(jù)是在終端解釋數(shù)據(jù)所用的字符集里,跟locale無關(guān)。

3.使用腳本文件進(jìn)行mysql的操作

比如 mysql > source /home/aa/test.sql

那么所執(zhí)行的sql語句的編碼與其所在的文件的編碼一致。

三、實(shí)踐指導(dǎo)意義:

1.

mysql數(shù)據(jù)庫的my.cnf 增加如下設(shè)置:

[mysqld]

default-character-set = utf8 ?#以便能存儲(chǔ)任何編碼的數(shù)據(jù)

2.

保證程序進(jìn)行數(shù)據(jù)庫操作前都使用set name xx, 就不會(huì)出現(xiàn)亂碼。 若進(jìn)數(shù)據(jù)庫發(fā)現(xiàn)有亂碼,試著改character_set_result;

總結(jié)

以上是生活随笔為你收集整理的mysql vim 退不出_字符集问题之 MySQL, Linux终端, vim的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。