使用mysql資料庫的亂碼解決方案

來源:互聯網
上載者:User

距離上次做項目已經有快兩個月了,一直沒有將問題做一個總結。趁著天寒地洞萬物凋零的季節將自己的心得發出來,以促後學。

       毫無疑問,無論程式開發還是網站開發,最糾結的問題就是亂碼了。我深有體會,深受其害。不過經過徹底反思和高人指點,終於解決了這個棘手的問題。分享一下。

       在開發過程中很多環節都會出現亂碼,比如前台頁面(網站開發案例)向servlet提交資料的環節需要設定編碼方式,servlet接收時同樣需要設定,servlet直接向前台輸出時要設定,串連資料庫時要設定,建立資料庫時也要設定,在mysql的命令列查詢表中資訊時有時也會有亂碼,這時也需要做處理。現在就這些問題將我在我的網站項目中的處理方法展示一下。

       1.將jsp頁面中的要將網頁的編碼方式設為UTF-8.當然gb2312或者GBK也是可以的,而且後二者可以實現中文編碼,或許這樣的資料插入資料庫不會再查詢時出現亂碼。無論怎樣,先確定一種編碼方案然後各個地方的編碼設定都要和這個地方的一致。My Code是這樣的:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

       2.在背景servlet類中要將dopost方法中接受前台參數的編碼方式設為UTF-8。如:req.setCharacterEncoding("UTF-8");當然如果需要用servlet來產生網頁,那麼一定要設定產生網頁的編碼方案:resp.setContentType("text/html;charset=UTF-8")。

       3.在寫串連資料庫那個工具類時也要寫上編碼方式:String url="jdbc:mysql://117.0.0.1/xiaohuier88040?user=xiaohuier88040&password=xiaohuier88040&useUnicode=true&charactorEncoding=utf8".至於為什麼要這麼寫,後面會做持續的介紹。注意這裡的編碼方式utf8之間已經沒有杠杠了,如果有杠杠的話是不能被是別的。

       至此,關於編碼過程中的處理亂碼的設定已經結束了。需要說明的是在這樣的設定下存進資料庫的資料時按照utf-8的編碼規範進行的編碼,但是utf-8是不能支援中文的。所以在Mysql的命令提示行裡查詢到的中文資訊都是亂碼。這時需要在查詢語句前執行 set NAMES=gbk;然後再執行查詢語句,你就可以看到可愛的中文了。

       有些無關編碼方式的小細節也是需要注意的。比如我在進行資料插入時沒有將string類型的資料加上單引號,結果出現了中文死活插入不成功的情況,我錯以為是編碼的問題。於是我絞盡腦汁費盡心肝地尋找關於編碼的問題,終於還是沒有解決。最後還是在網上一位前輩的提示下發現了這個問題。真是不該啊,之前還解決過這洋的問題。粗心害死貓啊。

       以後幾個篇章我會對問什麼做這樣的設定和編碼的原理和大家探討。持續關注。

     

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.