說說Java程序和數據庫交互的亂碼解決

本文就本人遇到的問題進行講解mysql

1.經過jdbc直連方式,鏈接Mysql數據庫,從程序向數據庫中寫入數據出現的亂碼解決方案。sql

  當經過程序向Student表中寫入一條數據時,寫入數據庫的內容會產生亂碼。數據庫

以下圖this

 

解決方案:編碼

  1。建立數據庫的時候:url

                            CREATE   DATABASE   `Db` 
                               CHARACTER   SET   'utf8 ' 
                               COLLATE   'utf8_general_ci '; spa


2.建表的時候:      code

                            CREATE   TABLE   `TableA`   ( 
                                    `ID`   varchar(40)   NOT   NULL   default   ' ', 
                                     `UserID`   varchar(40)   NOT   NULL   default   ' ',  ) 
                                      ENGINE=InnoDB   DEFAULT   CHARSET=utf8; server

可是本人感受關係不是很大,不過能夠做爲一種嘗試手段。blog

 3.該方案行之有效,就是修改Mysql安裝目錄的配置文件

 

須要修改my.ini中兩個位置的編碼,

第一處

 

第二處:

 

設置後,經過命令重啓服務

 

最終問題解決。

2.若是是經過jdbcmysql數據庫讀取數據出現亂碼,可是數據庫中數據自己並無出現亂碼,那麼可使用在url中加參數的解決方案。

Url寫法以下:

jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8 

 

3.若是將url中的localhost換成IP地址,出現以下問題:

報錯:1130-host ... is not allowed to connect to this MySql server

解決方法:

1。 改表法。

多是你的賬號不容許從遠程登錄,只能在localhost。這個時候只要在localhost的那臺電腦,登入mysql後,更改 "mysql" 數據庫裏的 "user" 表裏的 "host" 項,從"localhost"改稱"%"

mysql -u root -pvmwaremysql>use mysql;

mysql>update user set host = '%' where user = 'root';

刷新受權 ,該行代碼必須有。。FLUSH   PRIVILEGES;

 

4.JDBC-ODBC橋連方式從數據庫中讀取數據出現亂碼解決方案

不要直接讀取,可使用以下方式轉換讀取,問題解決

String stuname=new String(rs.getBytes(2),"utf-16le");

結語:JDBC和數據庫交互產生亂碼是開發中常常遇到的棘手問題,但願這裏的總結能夠幫助到您。

相關文章
相關標籤/搜索