當前位置:首頁 » 操作系統 » jdbc資料庫亂碼

jdbc資料庫亂碼

發布時間: 2022-07-24 01:36:19

㈠ 當用JDBC向資料庫中插入數據或從資料庫中提取數據時,為何有時中文字元會顯示為亂碼

這個問題通常與各個JDBC driver的實現有關. 目前大多數JDBC driver採用本地編碼格式來傳輸中文字元,例如中文字元"0x4175"會被轉成"0x41"和"0x75"進行傳輸. 因此我們需要對JDBC driver返回的字元以及要發給JDBC driver的字元進行轉換.

當用JDBC driver向資料庫中插入數據時,需要先將Unicode轉成native code; 當 JDBC driver從資料庫中查詢數據時,則需要將native code轉換成Unicode. 下面給出了這兩種轉換的實現:
String native2Unicode(String s) {
if (s == null' 's.length() == 0) {
return null;
}
byte[] buffer = new byte[s.length()];
for (int i = 0; i s.length(); i++) { if (s.charAt(i)>= 0x100) {
c = s.charAt(i);
byte []buf = (""+c).getBytes();
buffer[j++] = (char)buf[0];
buffer[j++] = (char)buf[1];
}
else {
buffer[j++] = s.charAt(i);
}
}
return new String(buffer, 0, j);
}
除使用以上兩個方法之外,有些JDBC driver如果對jdbc driver Manager設置了正確 的字元集屬性,以上2個方法就不需要了.

㈡ 我學習java的jdbc這塊,在插入Mysql資料庫時候 插入漢字是亂碼。怎麼設置呀

將jdbc的url改為
jdbc\:mysql\://伺服器ip\:埠/資料庫名稱?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true,這樣就可以解決亂碼問題了

㈢ 使用jdbc連接mysql,都會出現亂碼,請問這個該如何解決

在用 jdbc 向 mysql 資料庫插入中文時出現了亂碼,嚴格來說是通過 Hibernate。記錄下搜索和查文檔以後找到的解決辦法。 �6�1首先要告訴資料庫要插入的字元串使用的字元集,mysql 默認使用的字元集是 latin1。我要保存的字元串是 UTF-8 編碼的(字元集是 Unicode),所以包含這個欄位的表應該使用 UTF-8 編碼。這里有幾種解決辦法。 1.在建立資料庫的時候指定資料庫的字元集編碼,這樣,這個資料庫的所有表都會默認使用資料庫的字元集編碼。如 create database foo charset utf8; 2.在建表的時候指定字元集編碼。如 create table foo (id char(20)) charset utf8; 3.指定某一列使用的字元集編碼。如create table foo (id char(20) charset utf8); 如果你有需要的話還可以指定字元排序的規則,也就是指定 collation,如 create database foo charset utf8 collate utf8_general_ci;,同樣也可以指定單獨的表、列使用的 collation 規則。 �6�1然後在使用 jdbc 連接資料庫的時候要告知 jdbc 使用什麼字元集編碼來跟伺服器通信。很簡單,只需要在 jdbc 指定資料庫路徑時做一點修改就可以了。比如,jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf8。注意如果在 XML 文件裡面的話 「&」 要改成 「&」。 如果你使用的是 gbk 編碼的話把上面所有提到 utf8 的地方改成 gbk 應該就可以了,只要伺服器和客戶端使用的字元集編碼統一就可以了。 mysql 命令行客戶端默認使用的字元集也是 latin1,如果你通過這個來插入中文的話也會出現亂碼的情況。解決的辦法是執行語句 set names 'utf8' 來告訴伺服器使用 UTF-8 編碼來和客戶端通信。你也可以使用 set charset 'utf8',它和 set names 區別只在於 collation 上。set names 和 set charset 都相當於執行了三條語句,具體的內容可以去看 mysql 文檔 10.4 節。我想這個方法在使用 jdbc 的時候也是可以的,所以如果 jdbc 的指定資料庫地址中沒有告知使用的字元集編碼的話可以通過執行上面的語句來達到相同的效果。 先說一下我的環境,windows XP,mysql5.0安裝版,rails1.2.3。 試過的解決方法有3種: 1。重新利用 MySQL Server instance Config Wizard向導,重新Reconfigure Instance。改編碼為utf8 2。修改MySQL文件夾下的my.ini文件。如下: [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 3。SET character_set_client =utf8; SET character_set_results = utf8; SET character_set_connection = utf8; 可輸入mysql>SHOW VARIABLES LIKE '%character%' ;命令查看效果。 以上方式前2種其實是一個原理,看你習慣怎麼改罷了,而設置的值正是上圖中的character_set_database和character_set_server. 這些都是網上一搜一大片的處理方式,在這里也做一個總結。但我通過以上方式去做了以後,非但亂碼問題沒有解決,而且資料庫表中再無法插入中文。

㈣ jdbc查詢oracle資料庫發生中文亂碼,應該怎麼解決

資料庫中的中文是亂碼嗎?
如果資料庫中也是亂碼是不是資料庫字元集的問題

㈤ MySQL資料庫中的中文亂碼如何解決

mysql數據亂碼問題可能有以下三種原因:
1.server本身設定問題,例如還停留在latin1版本;
2.table的語系設定問題(包含character與collation);
3.客戶端程式(例如php,java)的連線語系設定問題;
建議使用utf8!!!!

想要避免mysql的中文亂碼問題,可以嘗試以下方法:
1,對於版本問題,建議去官網更新最新的版本或者比較好用的版本;

2,創建資料庫,創建表時沒有對字元編碼進行設定會造成亂碼問題:

創建資料庫的時候:CREATE DATABASE `test`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';

建表的時候 CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3,對於第三種情況,參考一下方法:
編輯linux伺服器中/etc/my.cnf文件,在[mysql]段加入default_character_set=utf8;
如果只是調試遇到亂碼問題:
在編寫Connection URL時,加上?useUnicode=true&characterEncoding=utf-8參數;
並且在網頁代碼中加上一個"set names utf8"或者"set names gbk"的指令,告訴MySQL連線內容都要使用utf-8或者gbk。
utf8或者gbk;

㈥ jdbc寫入資料庫亂碼

看代碼沒用 不是代碼問題 看你資料庫的編碼是UTF-8的嗎

㈦ jdbc連接資料庫執行update修改之後中文亂碼

你應該是安裝mysql的時候編碼你是選擇默認的吧。
你可以找到mysql的安裝目錄MySQL Server 5.0\bin\MySQLInstanceConfig.exe
重新配置下就可以了。一般選擇utf-8編碼。
再一個如果資料庫開始就建立好了。alter database 表名 character set utf8;
連接資料庫設置編碼
jdbc:mysql://地址:3306/資料庫名?characterEncoding=utf8

熱點內容
安卓微信簽名在哪裡修改 發布:2025-01-20 01:25:31 瀏覽:109
安卓電腦管家怎麼恢復出廠設置 發布:2025-01-20 01:24:06 瀏覽:313
qt編譯sqlite庫 發布:2025-01-20 01:22:30 瀏覽:525
360攝像頭存儲設置 發布:2025-01-20 01:16:01 瀏覽:538
js防緩存 發布:2025-01-20 01:15:47 瀏覽:495
編程生日卡 發布:2025-01-20 01:15:14 瀏覽:206
android備忘錄源碼 發布:2025-01-20 01:06:32 瀏覽:455
怎麼禁用aspx緩存 發布:2025-01-20 01:00:50 瀏覽:688
我的手機如何恢復安卓系統 發布:2025-01-20 00:55:48 瀏覽:367
eclipsejsp編譯 發布:2025-01-20 00:51:02 瀏覽:861