應用層使用 spring 的org.springframework.web.filter.characterencodingfilter 使用utf-8轉碼,jsp頁面統統使用utf-8。關鍵是在mysql上面有問題, 由於第一次使用mysql,很不清楚怎麼設定。在網上找了一大堆,按照方式修改,結果均不能啟動。 後來想是不是由於版本問題造成的? 看了一下版本:5.5 原來果然有版本限制。下面是具體設定。
1. 首先使用mysql命令進入mysql命令介面。使用如下命令檢視編碼設定
mysql> status
--------------
mysql ver 14.14 distrib 5.5.12, for linux (i686) using readline 5.1
connection id: 20
current database:
current user: root@localhost
ssl: not in use
current pager: stdout
using outfile: ''
using delimiter: ;
server version: 5.5.12-log mysql community server (gpl)
protocol version: 10
connection: localhost via unix socket
server characterset: latin1 #server char
db characterset: latin1 #db char
client characterset: latin1 #client char
conn. characterset: latin1 #connection char
2. 上面的latin1就是產生亂碼的罪魁禍首,因為入庫 和 資料顯示的時候使用的utf-8,因此,只需要將上面命令檢視到的編碼修改即可。
3. 修改/etc/my.cnf 中的設定,
在[client]節點下新增
default-character-set=utf8
在[mysqld]節點下新增
character-set-server=utf8
collation-server=utf8_general_ci
儲存即可(如果你是使用vi來操作,則儲存時會報錯,因為這個檔案是唯讀屬性,可以使用 wq! 強制儲存退出)。
4. 重啟mysql即可。
5. 這裡面本沒有什麼高深之處, 重要一點是要注意版本, 網上有不少的修改帖子,都是要在[mysqld]下加上 default-character-set=utf8 ,實際上5.0(>)版本以上是不支援的,如果你這樣修改, 你的mysql將不能啟動, 報乙個錯,資訊是"上次退出的時候沒有儲存pid ??
關於亂碼:
這麼多年來,碰到的亂碼問題可多了, 最開始學習jsp ,使用tomcat、到各種資料庫, 或者從xml等解析資料, 我的總結是: 亂碼不可怕, 只要把握一條原則即可, 「這個東西用什麼編碼的, 用什麼解碼的,用什麼編碼的, 用什麼解碼的....」,只要保證這個過程中的編碼、解碼過程一致就ok, 例如,你用gbk編碼了乙個str, 然後用utf解碼肯定會出錯,但是你如果用這個utf8的str解碼後的byte用gbk再次編碼就麼有問題了。
要清楚本質: 不論什麼東東, 在底層表示的時候都是 byte, 而在真正編碼的時候,就可能是用乙個位元組、兩個位元組 ==來表示某種語言的乙個字元, 例如乙個asc字元用乙個byte表示即可,但是漢字卻是使用兩個位元組。 解碼時,乙個漢字用兩個byte表示,如果你在編碼的時候用這兩個byte來解析成兩個字元,則結果不是原字元-----這就是亂碼原理。
最懶的方式: 保證你的專案 從ui-server-db 這個過程使用一致的編碼格式即可,前提是你需要知道各個過程**發生瞭解碼、**發生了編碼。
Linux,mysql密碼設定和設定ip許可權訪問
在我的前面一篇博 linux,安裝mysql 有介紹怎麼在linux上安裝mysql,安裝成功之後,我們可能想給mysql加上訪問密碼和ip的訪問許可權,一方面是增加資料庫的安全係數,所以要注意的是,當你的ip位址變動了,要及時修改哦 1.先進入mysql安裝目錄下的bin資料夾,root許可權的進...
Linux Mysql設定遠端登入許可權管理
mysql grant許可權1,許可權2,許可權non資料庫名稱.表名稱to使用者名稱 使用者位址identified by 連線口令 其中1.許可權 select,insert,update,delete,create,drop,index,alter,grant,references,reloa...
Tensorflow全域性設定可見GPU編號
筆者需要tensorflow僅執行在乙個gpu上 機器本身有多gpu 而且需要依據系統引數動態調節,故無法簡單使用cuda visible devices。一種方式是全域性使用tf.device函式生成的域,但裝置號需要在繪製graph前指定,仍然不夠靈活。查閱文件發現config的gpuoptio...