在使用xutils時post請求傳遞中文到服務端Mysql資料庫出現中文亂碼。

來源:互聯網
上載者:User

標籤:

            在使用xutils時post請求傳遞中文到服務端Mysql資料庫出現中文亂碼。

這個問題困惑了我很久,也走了很多彎路。經過不斷的探究終於找到了問題的解決方案。

第一:查看自己的mysql的編碼。cmd—>mysql –uroot –p -->輸入自己的mysql的密碼—>輸入 SHOWVARIABLES LIKE ‘character%‘;(如果裝mysql時預設安裝的話,會出現很多latin1,而不是我下面的全部utf-8,這是因為mysql預設的編碼是latin1),如果全是Latin1的話,想要不出現中文亂碼的話,就要改為utf-8了。

第二:更改Latin1為utf-8。找到安裝mysql的路徑下的my.ini檔案。開啟這個檔案。

           分別在:[client] 下一行加入default-character-set=utf8

                          [mysql]下一行加入default-character-set=utf8

                         [mysqld]下一行加入character-set-server=utf8(這裡注意較老的版本mysql加入default-character-                                   set=utf8是可以的,但5.5就不可以了,重啟mysql就會報錯)

                         找到# Thedefault character set that will be used when a new schema or table is

                             # created and no character set is defined

                           character-set-server= latin1改為character-set-server=utf8。

   這樣就可以將Latin1為utf-8。重啟mysql(右擊我的電腦->管理->服務與應用程式->服務,找到mysql重啟),當你重複第一步驟時會發現。大多數Latin1已經變為utf-8。可惜,可惜,有一項(character-set-server)還是為Latin1,這是由於當時裝mysql時,預設安裝時server編碼預設為Latin1,這時,不要慌,mysql還是挺好的,可以重新設定編碼。找到mysql的bin目錄下的MySQLInstanceConfig.exe,啟動這個就可以程式,將server的編碼改為utf-8就行。重啟mysql,執行第一步驟。會發現所有的Latin1已經改為utf-8(當然有一項filesystem就是binary,無需改的)。




第三:如果你使用的tomcat進行通訊的話,由於tomcat的預設編碼是iso8859-1。這是就需要修改tomcat的編碼:修改tomcat下的conf/server.xml檔案

找到如下代碼:

<Connectorport="8080" protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443" />

添加URIEncoding="UTF-8" 就行了。

第四:在傳輸中文時用

StringdeviceIntoTime=deviceInfEntity.getDeviceIntoTime();

//如果有中文,要進行URLEncoder.encode方法

params.addBodyParameter("deviceIntoTime",URLEncoder.encode(deviceIntoTime, "utf-8"));

接收時用:

String deviceIntoTime =URLDecoder.decode(request.getParameter("deviceIntoTime"),"utf-8");

第五:經過上面的步驟,儲存到mysql的中文資料還是亂碼,這是你的資料庫建立有問題了。

比如我就出現:

Incorrect stringvalue: ‘\\xE6\\xB7\\xB1\\xE5\\x85\\xA5...‘ for column ‘title‘ at row 1"

這時修改資料庫的屬性,選擇charset為utf-8,collation為utf8-unicode-ci。記得還有表中涉及中文的列也要選擇charset為utf-8,collation為utf8-unicode-ci。這樣就行了。





在使用xutils時post請求傳遞中文到服務端Mysql資料庫出現中文亂碼。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.