JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » JDBC/SQL討論區 » MySQL  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 mysql存中文變亂碼 [精華]
slipknot





發文: 9
積分: 0
於 2004-03-01 22:35 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
各位前輩大家好,
最近再寫一個application,
用mysql的 connecter/J 連結 mysql資料庫時
我把character set改成big5以後
嘗試以中文存入的話
會出現
java.sql.SQLException: Error during query: Unexpected Exception: java.lang.StringIndexOutOfBoundsException message given: String index out of range: 45
類似這樣的錯誤..能不能請各位位我解答一下呢...蠻困擾的..中文無法存進去
thanx in advance
hallelujah


slipknot edited on 2004-03-02 00:34
reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:slipknot]
browser

戀香

版主

發文: 3570
積分: 1
於 2004-03-02 02:20 user profilesend a private message to usersend email to browserreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
全文檢索

1•mysql 中文
2•StringIndexOutOfBoundsException

good luck
PS. 若依然找不到 .. 再來繼續討論 Smile


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:slipknot]
slipknot





發文: 9
積分: 0
於 2004-03-02 13:58 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
hi..我已經搜尋過相關文章..但沒有發現很確切和我ㄧ樣的問題
所以才發表問題,不知道能否指教勒?
thanx


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:slipknot]
browser

戀香

版主

發文: 3570
積分: 1
於 2004-03-02 14:04 user profilesend a private message to usersend email to browserreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
slipknot wrote:
hi..我已經搜尋過相關文章..但沒有發現很確切和我ㄧ樣的問題
所以才發表問題,不知道能否指教勒?
thanx


那有試過 StringIndexOutOfBoundsException 嗎 ..
因為我覺得這才是主要原因 ....
錯誤的發生 ... 是因為存入陣列的值,個數大於陣列的大小


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:browser]
slipknot





發文: 9
積分: 0
於 2004-03-02 14:51 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
hi..當我把character set=big5時候,存入某幾個中文字是沒問題的,
但是存大部分中文字的時候,insert 到MYSQL時會出現
java.sql.SQLException: Error during query: Unexpected Exception: java.lang.StringIndexOutOfBoundsException message given: String index out of range: 43

當我把character set=big5拿掉以後,變成預設的latin後,
所有的中文insert不會出現exception,
但是存入的字變成問號,發現好像沒有什麼人跟我發生同樣的問題,
能否指教呢?
thanx in advance.


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:slipknot]
tomychau





發文: 7
積分: 0
於 2004-03-02 15:47 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我找到答案了 ..............................
mysql-connector-java-3.0.11-stable-bin.jar
這 jar 有 bug

用 mysql-connector-java-3.0.10-stable-bin.jar 吧,那就沒事了。


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:tomychau]
browser

戀香

版主

發文: 3570
積分: 1
於 2004-03-02 15:55 user profilesend a private message to usersend email to browserreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
tomychau wrote:
我找到答案了 ..............................
mysql-connector-java-3.0.11-stable-bin.jar
這 jar 有 bug

用 mysql-connector-java-3.0.10-stable-bin.jar 吧,那就沒事了。


Thumbs up
正想問你們使用的 driver 是那一個版本的 ....

原來 3.0.11 的 driver 有 bug 呀
有沒有熱心人士 ... 去 bug report


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:slipknot]
ming215





發文: 143
積分: 2
於 2004-03-02 15:57 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
slipknot wrote:
hi..當我把character set=big5時候,存入某幾個中文字是沒問題的,
但是存大部分中文字的時候,insert 到MYSQL時會出現
java.sql.SQLException: Error during query: Unexpected Exception: java.lang.StringIndexOutOfBoundsException message given: String index out of range: 43

當我把character set=big5拿掉以後,變成預設的latin後,
所有的中文insert不會出現exception,
但是存入的字變成問號,發現好像沒有什麼人跟我發生同樣的問題,
能否指教呢?
thanx in advance.


最近偶們有個案子..遇到類似的問題...Sad

server 環境為 redhat 9 + apache2 + tomcat 4.1.29 + mysql 3.23
(..目前只有啟動 tomcat..跟 apache 整還有問題..Embaressed )

mysql 的 character set 為 big5, 一開始轉資料進資料庫時..
在 server 端的 mysql 可看到 中文字..但在 jsp 的網頁程式中..從資料庫讀出來的data 會變亂碼...但網頁本身是正常顯示

後來發現應該是 unicode 及 big5 的問題..

於是將資料轉為 unicode 存入 mysql... 則 jsp 程式可正常讀寫中文..( 那時以為正常..Black Eye ) ...但在 server 端的 mysql 中文部份則會看到亂碼...

這 2 天在測試時..發現更神奇的事...Shock

在做 insert / update 存入 text 型態的欄位時.....

做了幾種資料的測試結果如下..

1. 純中文字...約超過 50 個字..就會出現上面的訊息...What are you talking about?
2. 純英文字...超過 1000 字都 ok..口以正常存檔.....
3. 中英文混用....超過 1000 字...ok....正常存檔.......

哇勒..誇丟鬼.. Disapproved

後來再努力..用力滴給它 try ... 目前滴結果素...換一個 jdbc...存檔就都 ok 了..
但因為原本用的 jdbc 跟現在用的 jdbc.. 用法不大一樣..所以..現在哇口連滴同事正在努力滴把所有的程式翻過一遍....Clock ...

建議你換個 jdbc 看看唄... 偶們目前的情形是醬子~

ps: 存 unicode 的話, 記得欄位長度要放寬..不然不夠放會被截掉..被截掉的字..顯示出來一樣是 問號.......... Dead


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:slipknot]
tomychau





發文: 7
積分: 0
於 2004-03-02 16:03 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我去看了 bug report 想跟 mysql 說。
但很煩 @@"
要做會員才可以去說 bug。

Dead <--------懶人一個


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:tomychau]
slipknot





發文: 9
積分: 0
於 2004-03-02 23:14 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
tomychau wrote:
我找到答案了 ..............................
mysql-connector-java-3.0.11-stable-bin.jar
這 jar 有 bug

用 mysql-connector-java-3.0.10-stable-bin.jar 吧,那就沒事了。


thanx dude...it works,
被這個鳥問題困擾了兩天超煩
anyway, thank u very much


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:slipknot]
sho





發文: 14
積分: 1
於 2004-03-03 14:44 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我很好奇的問一個題外話..
1
2
3
4
5
6
7
8
9
10
11
12
13
請問你們用mysql有付錢嗎....
mysql在商業用上是要錢的..
除
1.個人使用
2.教育用
3.該用的程式也是open source
 
如果你們另要選真正free DB的話會用拿各..
ex:
Postgresql HSql Firebird....
 
還有resin也是要錢的....
我遇過不少人都以為"mysql" "resin" 是free software


sho edited on 2004-03-03 16:18
reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:slipknot]
chih





發文: 1
積分: 0
於 2004-03-03 18:22 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
可不可以麻煩分享一下 "mysql-connector-java-3.0.10-stable-bin.jar" 丫~~
mysql的網站上只剩 3.0.11 的~~
抓不到 3.0.10 了~~


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:chih]
anthonycs



版主

發文: 1195
積分: 6
於 2004-03-03 18:59 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
chih wrote:
可不可以麻煩分享一下 "mysql-connector-java-3.0.10-stable-bin.jar"
mysql的網站上只剩 3.0.11 的~~
抓不到 3.0.10 了~~


http://www.ibiblio.org/maven/mysql/jars/

google上很多阿.


reply to postreply to post
新手請維持互動討論精神, 請看良好的 討論示範
作者 Re:mysql存中文變亂碼 [Re:ming215]
anthonycs



版主

發文: 1195
積分: 6
於 2004-03-03 19:00 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
ming215 wrote:
後來再努力..用力滴給它 try ... 目前滴結果素...換一個 jdbc...存檔就都 ok 了..


阿寄妳講這麼多 , 忘記講到底換了哪一個JDBC Driver. Dead
就是那個 mysql-connector-java-3.0.10-stable-bin.jar 嗎?


reply to postreply to post
新手請維持互動討論精神, 請看良好的 討論示範
作者 Re:mysql存中文變亂碼 [Re:anthonycs]
prometheus

理智就像剝了皮的野獸



發文: 136
積分: 1
於 2004-03-03 22:14 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
anthonycs wrote:
阿寄妳講這麼多 , 忘記講到底換了哪一個JDBC Driver. Dead
就是那個 mysql-connector-java-3.0.10-stable-bin.jar 嗎?

阿寄的口憐同事代為回答:

改版之前的是用mysql_jdbc-1.2c.jar
改版之後則是用mysql-connector-java-3.0.8-stable-bin.jar

write once , rewrite everywhere.....


reply to postreply to post

魔 : 在某項技術領域上具有不可取代性且具有高度權威者
妖 : 有高度實戰經驗且在專業領域上具有 domain knowledge 者
俠 : 在技術層面上有過人專業能力者
人 : 可以獨立運作、設計暨開發系統者
蟲 : coder only

我是蟲兒慢慢爬......
作者 Re:mysql存中文變亂碼 [Re:sho]
tomychau





發文: 7
積分: 0
於 2004-03-04 09:44 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
sho wrote:
我很好奇的問一個題外話..
1
2
3
4
5
6
7
8
9
10
11
12
13
請問你們用mysql有付錢嗎....
mysql在商業用上是要錢的..
除
1.個人使用
2.教育用
3.該用的程式也是open source
 
如果你們另要選真正free DB的話會用拿各..
ex:
Postgresql HSql Firebird....
 
還有resin也是要錢的....
我遇過不少人都以為"mysql" "resin" 是free software



我以前是用 Firebird ,但實在受不了它那見鬼 jdbc 才會改用 MYSQL。
Sad 還以為是 FREE。 那改目標 Postgresql Angry


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:tomychau]
TAHO

可愛吧∼∼

版主

發文: 270
積分: 7
於 2004-03-07 01:28 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我對於像 mysql 之類的版權聲明不太瞭解ㄟ∼∼
所謂的不能做商業用途,是指不能掛在你的程式中一起賣給別人
還是說只要是賺錢的公司用的就不行?
我的意思是說 有兩種狀況
1. A 公司寫程式給 B 公司用,程式中用到了 MySQL , 於是 A 公司把程式跟 MySQL 包在一起,賣給 B 公司
2. A 公司利用 JDBC 寫了一個程式,賣給 B 公司,B 公司自己選擇用 MySQL,並下載 JDBC driver 來搭配 A 公司的程式

我想第一種狀況是一定要付費給 MySQL 的
那第二種狀況呢??


reply to postreply to post
請養成良好的 Java 程式碼慣例 習慣
作者 Re:mysql存中文變亂碼 [Re:TAHO]
jini

SoftLeader Taiwan

版主

發文: 1266
積分: 23
於 2004-03-07 02:06 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
TAHO wrote:
我對於像 mysql 之類的版權聲明不太瞭解ㄟ∼∼
所謂的不能做商業用途,是指不能掛在你的程式中一起賣給別人
還是說只要是賺錢的公司用的就不行?
我的意思是說 有兩種狀況
1. A 公司寫程式給 B 公司用,程式中用到了 MySQL , 於是 A 公司把程式跟 MySQL 包在一起,賣給 B 公司
2. A 公司利用 JDBC 寫了一個程式,賣給 B 公司,B 公司自己選擇用 MySQL,並下載 JDBC driver 來搭配 A 公司的程式

我想第一種狀況是一定要付費給 MySQL 的
那第二種狀況呢??


B 公司如果是作為商業用途, B公司付費
因為 A 公司並沒有提供 MySQL 給予 B 公司
而xx公司就是鑽這個漏洞
因為我猜他們的程式應該只符合 mysql 的語法 @@"


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:slipknot]
tomychau





發文: 7
積分: 0
於 2004-03-08 13:43 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
如果A公司寫程式給自己用呢? 那麼 MYSQL 需要收費嗎?

reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:tomychau]
javamon65





發文: 52
積分: 1
於 2004-03-08 14:42 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
節錄自 MySQL Commercial License

If you include one or more of the MySQL drivers in your non-GPL application (so that your application can run with MySQL), you need a commercial license for the driver(s) in question. The MySQL drivers currently include an ODBC driver, a JDBC driver and the C language library.

只要用到 mysql 自己提供的 JDBC driver 也必須付費....!

ps : 是不是可以開個新的串流,影響好像蠻大的...!


reply to postreply to post
give me a try ...
作者 Re:mysql存中文變亂碼 [Re:slipknot]
tomychau





發文: 7
積分: 0
於 2004-03-08 18:19 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
那麼 @@" 請問現在有沒有一些 free 的 jdbc 是可以用在 mysql 裡?
如果有那種 jdbc~ mysql 不就可以 free 了嗎 ^^"


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:slipknot]
sacahan





發文: 3
積分: 0
於 2004-05-10 03:57 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
在下覺得要使用JAVA連接MySQL不出亂碼(即使用command line為中文,使用java access也是中文),至少要以下5點配合(請前輩指教):

1. MySQL選用4.0的版本(刻意不使用UFT-8編碼)

2. mysql-connector-java選用3.0.10(不要使用3.1.1或3.0.11)

3. MySQL預設編碼為'big5'

4. JAVA連接語法為 : url = "jdbc:mysql://localhost:3306/資料庫名稱?useUnicode=true&characterEncoding=big5"

5. 存入MySQL的文字以ANSI(MS950)編碼(我指的是使用LOAD DATA LOCAL INFILE...命令吃入的文字檔)。


sacahan edited on 2004-05-23 02:01
reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:slipknot]
hologram

爪哇新生



發文: 168
積分: 0
於 2004-05-12 01:54 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我也來提供點意見 JSP和JDBC的世界實在是太混亂了 @@

1. MySQL用4.0.18的版本 不要用5.0.0a的版本 也不要用3.X版的

2. 需要取得傳值的時候 加上request.setCharacterEncoding("big5");

3.再加上sacahan大大說的五點 應該就萬無一失了

題外話 感謝所有在此回答問題的人 我受益良多
我也要努力來幫助更多的人 Smile


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:sacahan]
grady





發文: 10
積分: 0
於 2004-05-20 17:44 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
1. MySQL選用4.0的版本(刻意不使用UFT-8編碼)
2. mysql-connector-java選用3.0.10(不要使用3.1.1或3.0.11)
3. MySQL預設編碼為'big5'
4. JAVA連接語法為 : url = "jdbc:mysql://localhost:3306/資料庫名稱?useUnicode=true&characterEncoding=big5"
5. 存入MySQL的文字以ANSI編碼(我指的是使用LOAD DATA LOCAL INFILE...命令吃入的文字檔)。


我試過的是...MySQL 4.1.1a UTF-8
mysql-connector-java 3.0.10 3.0.11 (3.0.12會有問題)
MySQL 編碼UTF-8

中文字寫入和讀取階正常.....
windows 2000 pro
jdk 1.4.2


reply to postreply to post
作者 Re:mysql存中文變亂碼 [Re:slipknot]
Rowe





發文: 18
積分: 0
於 2004-07-05 03:22 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
懇求請教一下
我們原本使用的MySQL版本是3.23,之前已經解決了中文讀寫的問題
後來因程式撰寫需求,將版本提升到4.1,結果讀取就出現亂碼(存沒問題)
先前存在MySQL裡的資料是Big5,從Server看是正常的,從JSP讀取就變亂碼
使用的mysql-connector-java是3.0.10,JSP程式也沒換過(只換資料庫版本)
1
2
3
4
5
6
7
節錄部份程式
<%@ page contentType="text/html; charset=Big5"%>
<%
String connect = "jdbc:mysql://localhost/資料庫名稱?user=&password=&
useUnicode=true&characterEncoding=big5";
con = DriverManager.getConnection(connect);
%>
另外,如果在my.ini設定Big5,重新啟動後就更慘,網頁顯示不正常(連亂碼都沒了)
Sad希望大家能幫助我找出問題,謝謝


reply to postreply to post
go to first page go to previous page  1   2   3  go to next page go to last page
» JWorld@TW »  JDBC/SQL討論區 » MySQL

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8