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

» JWorld@TW » Servlet/JSP 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 tomcat + mysql 的中文編碼整理 (許功蓋問題) [精華]
jong



發文: 0
積分: 0
於 2003-07-29 21:24 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
首先感謝各位回答我問題的朋友,沒有這個網站我的問題不知從何解決,感謝

小弟自告奮勇整理有關:tomcat + mysql 的中文編碼整理 (許功蓋問題)
此問題的解答,希望能對這裡有點回饋•

好!不費話........

問題:使用 tomcat + mysql 在 big5 碼的要求下,網頁間的資料傳遞和 mysql 的寫入和查詢會有狀況•

解決:首先強調,如果環境設定週全的話,上述問題是不存在的!(各位先前幫我解答的高手們,我對不起你!),但如何設訂週全?資整理如下:

1.
getConnection()時, 利用JDBC驅動程式: Connector/ J提供的設定

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=big5");

當然前提是要用MySQL的Connector/J 作為JDBC驅動程式(其他 Driver 我不確定有無此方式)

2. .jsp 的網頁裡

<%@page contentType = "text/html;charset=Big5"%>
<%request.setCharacterEncoding("BIG5");%>

如此一來,有關 big5 碼的溢位問題,將可以巧妙的避開,以上整理供大家參考,也再此謝謝幫我解答的朋友們! thanks


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:jong]
browser

戀香

版主

發文: 3570
積分: 1
於 2003-07-29 23:53 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
首先 ... 感謝 jong 兄的整理 ...
原本今天才和 koji 商量 ... 要把我新書中關於此部分的說明
張貼上來 .. 方便大家解決問題 ...

如今 .. jong 兄也回答差不多了 ...
不過 .. 在這裡我最後補充一點
如果遇到 宏基(下面是 石) 時,還是會有錯
解決方法 .. 把 BIG5 改為 MS950 即可 ...

ps.以上還不是最佳的方法 .... Wink


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:browser]
Forth



版主

發文: 676
積分: 8
於 2003-07-29 23:57 user profilesend a private message to usersend email to Forthreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
大家來用UTF-8吧~

ps. 我的MT也是用UTF-8


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:browser]
Biologic

生物學下的產物



發文: 524
積分: 4
於 2003-07-30 00:01 user profilesend a private message to usersend email to Biologicreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
browser wrote:
首先 ... 感謝 jong 兄的整理 ...
原本今天才和 koji 商量 ... 要把我新書中關於此部分的說明
張貼上來 .. 方便大家解決問題 ...

如今 .. jong 兄也回答差不多了 ...
不過 .. 在這裡我最後補充一點
如果遇到 宏基(下面是 石) 時,還是會有錯
解決方法 .. 把 BIG5 改為 MS950 即可 ...

ps.以上還不是最佳的方法 .... Wink


可是直接下
select from table where column='許功蓋'
到 statement.executeQuery() 還是會有問題...
我剛剛有試過, 好像是 escape character 的問題....


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:Biologic]
Forth



版主

發文: 676
積分: 8
於 2003-07-30 00:02 user profilesend a private message to usersend email to Forthreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
來吧~~投入PostgreSQL的懷抱吧 :p

reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:Forth]
Biologic

生物學下的產物



發文: 524
積分: 4
於 2003-07-30 00:07 user profilesend a private message to usersend email to Biologicreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Forth wrote:
來吧~~投入PostgreSQL的懷抱吧 :p


不過 postgreSQL 沒有 escape string 問題嗎?


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:Biologic]
Forth



版主

發文: 676
積分: 8
於 2003-07-30 00:10 user profilesend a private message to usersend email to Forthreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
沒有

reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:jong]
daniel1120

cynthia



發文: 31
積分: 0
於 2003-07-30 03:09 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
直接改成jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
就都可以解決了...


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:jong]
jong



發文: 0
積分: 0
於 2003-07-30 11: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
總版主大大
您留下了伏筆.........."ps.以上還不是最佳的方法 .... "

那最佳方式是??還是您的新書上有提??如果是.........拜託趕快告訴我書名吧?


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:browser]
sursur





發文: 44
積分: 0
於 2003-10-21 17: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
我已經照 jong 說的改了,但還是不行,輸入"我姓黃",沒有問題,但輸入"我姓許"就會有錯誤,我的主要程式碼及錯誤如下:

程式碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%@page import="java.util.*,java.sql.*,java.io.*"%>
<%@page contentType = "text/html;charset=Big5"%>
<%request.setCharacterEncoding("Big5");%>
<%
   String subject=request.getParameter("subject");
   String words=request.getParameter("words");
   String chnoteid=request.getParameter("noteid");
 
  Class.forName("com.mysql.jdbc.Driver").newInstance();
  Connection myConn = DriverManager.getConnection("jdbc:mysql://localh ost/work?user=temp&password=3805
                                 &useUnicode=true&characterEncoding=Big5");
  Statement state = myConn.createStatement();
  String sql="UPDATE note SET notesub=' "+subject+" ',noteword=' " +words+" ' where noteid=' "+chnoteid+" ' ";
  int result=state.executeUpdate(sql);
  state.close();
  myConn.close();
    
%>


錯誤:
1
2
3
javax.servlet.ServletException:
 Syntax error or access violation,  message from server: "You have an error in your SQL syntax near '39' ' at line 1"
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:471)


我是用mysql-connector-java-3.0.9-stable.zip+Apache Tomcat 4.0+j2sdk1.4.1_03
mysql的版本是3.23


browser edited on 2003-10-22 10:56
reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:jong]
browser

戀香

版主

發文: 3570
積分: 1
於 2003-10-21 17:31 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
如果我記得沒錯 ... useUnicode=true&characterEncoding=big5
應該只支援 Mysql 4.X 的 .....

PS1•請將程式碼排版好 ... 參見我的名片檔
PS2•可以修改自己的文章 ... 參見我的名片檔


browser edited on 2003-10-21 18:19
reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:browser]
javamon65





發文: 52
積分: 1
於 2003-10-21 17:53 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 做的一個 project , 使用... useUnicode=true&characterEncoding=utf-8 一樣可行 !和總版主大人講的有出入;順便一提的是網頁的 contentType 也是指定成 utf-8

=========
環境 :
mysql : 3.23
mysq jdbc : mm.mysql-2.0.4-bin.jar
tomcat 3.2.4


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:javamon65]
browser

戀香

版主

發文: 3570
積分: 1
於 2003-10-21 18:23 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
javamon65 wrote:
之前用MySQL 3.23 做的一個 project , 使用... useUnicode=true&characterEncoding=utf-8 一樣可行 !和總版主大人講的有出入;順便一提的是網頁的 contentType 也是指定成 utf-8

=========
環境 :
mysql : 3.23
mysq jdbc : mm.mysql-2.0.4-bin.jar
tomcat 3.2.4


謝謝指正 .... Tongue

我知道那裡有問題了 ....
把 Big5 改為 MS950 .....
就 ok 了 ...

PS. sursur .. 你還是別忘了修改你的文章呦 .....


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:jong]
sursur





發文: 44
積分: 0
於 2003-10-22 09:10 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
我把contentType和DriverManager.getConnection都改成MS950,結果…不行!!
改成UTF-8是可以沒錯啦~~但是那些中文的按鈕呀!跟欄位名稱…等的,全都變成亂碼啦~~我知道當初用big5寫進去資料庫的,
取出來用utf-8是會變成亂碼,但是…不知道連網頁上的按鈕和欄位名稱都會變成亂碼呀!嗯…尷尬!

ps:sorry,我貼文章時已經有稍微排一下了,結果還是亂,我改好了,下次我會注意的,不好意思哦~~~


sursur edited on 2003-10-22 09:21
reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:sursur]
snpshu

Norman

版主

發文: 1073
積分: 5
於 2003-10-22 09:40 user profilesend a private message to usersend email to snpshureply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
sursur wrote:
我把contentType和DriverManager.getConnection都改成MS950,結果…不行!!
改成UTF-8是可以沒錯啦~~但是那些中文的按鈕呀!跟欄位名稱…等的,全都變成亂碼啦~~我知道當初用big5寫進去資料庫的,
取出來用utf-8是會變成亂碼,但是…不知道連網頁上的按鈕和欄位名稱都會變成亂碼呀!嗯…尷尬!

ps:sorry,我貼文章時已經有稍微排一下了,結果還是亂,我改好了,下次我會注意的,不好意思哦~~~


你的問題應該是編輯器的編碼問題..因為你的content-type為utf8的話...但你win32 環境是以MS950 寫入,當然看起來是亂碼..
use utf8 editor or convert ?!


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:sursur]
browser

戀香

版主

發文: 3570
積分: 1
於 2003-10-22 10:47 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
sursur wrote:
我把contentType和DriverManager.getConnection都改成MS950,結果…不行!!
改成UTF-8是可以沒錯啦~~但是那些中文的按鈕呀!跟欄位名稱…等的,全都變成亂碼啦~~我知道當初用big5寫進去資料庫的,
取出來用utf-8是會變成亂碼,但是…不知道連網頁上的按鈕和欄位名稱都會變成亂碼呀!嗯…尷尬!

ps:sorry,我貼文章時已經有稍微排一下了,結果還是亂,我改好了,下次我會注意的,不好意思哦~~~


我暈 ~~~
1•contentType 改為 MS950 ( 不是重點 .. 它只是用來能正確 show 在 頁面上)
2•<% request.setCharacterEncoding("MS950"); %> <== 你沒改這個啦
3•
1
2
Connection myConn = DriverManager.getConnection("jdbc:mysql://localh ost/work?user=temp&password=3805
&useUnicode=true&characterEncoding=Big5"); 

維持這樣 ...........

4•這樣子絕對可以 ......... (除非你預設 compile 編碼不一樣 )

你先別用 UTF-8 ... 你編碼的觀念還不足 .... ><"

PS. 請你排版好 ... 是程式部分用黑框 .... 至於怎麼做 ... 仔細看我的名片檔 .... Angry


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:jong]
sursur





發文: 44
積分: 0
於 2003-10-22 10:50 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
嗯…我真的改了,但還是不行哦~~我想我可能就是出了你說的那個錯,編譯的方式不同吧!投降了

sursur edited on 2003-10-22 11:42
reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:sursur]
browser

戀香

版主

發文: 3570
積分: 1
於 2003-10-22 10:53 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
sursur wrote:
SORRY....我資質駑頓,不太明白你所說的東西!可否告訴我比較詳細的方法,去解決這個問題呢!?我很笨哦~~


你先解決你的程式吧 ....


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:jong]
sursur





發文: 44
積分: 0
於 2003-10-22 12: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
我真的改了,還是不行!我是用notepad來做那個網頁的,所以不知道什麼預設的編碼方式…大概我跟mysql沒有緣份吧!唉…-_-

reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:sursur]
browser

戀香

版主

發文: 3570
積分: 1
於 2003-10-22 12:46 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
sursur wrote:
我真的改了,還是不行!我是用notepad來做那個網頁的,所以不知道什麼預設的編碼方式…大概我跟mysql沒有緣份吧!唉…-_-


我講的 1,2,3 點 . 都和我寫的一樣
還不行 ....

我是這樣子做的 ... 就 ok 了 ...

PS. 我只有在 mysql 4.x 上 run 過 ....


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:jong]
sursur





發文: 44
積分: 0
於 2003-10-22 14: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不直援的中文,就在後面加一個 \,
只是我不太清楚,要怎麼判斷這個字是不是MYSQL支援的中文,因為我的真的不了解編碼問題,所以請給我一點頭緒吧!?謝謝


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:sursur]
browser

戀香

版主

發文: 3570
積分: 1
於 2003-11-27 07:54 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
sursur wrote:
我是真的都改成跟你一樣了,我確定…還是不行,不過我在輸入時,輸入「我姓許\」就可以了,從資料庫抓出來,
顯示的是「我姓許」哦~~沒有 \…
所以我打算用最笨的方法,就是把使用者所輸入的字串,每個字都抓出來比對,若是MYSQL不直援的中文,就在後面加一個 \,
只是我不太清楚,要怎麼判斷這個字是不是MYSQL支援的中文,因為我的真的不了解編碼問題,所以請給我一點頭緒吧!?謝謝


1
2
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?user=root&password=your_password&
useUnicode=true&characterEncoding=UTF-8");


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:browser]
marace

網路這份憾動力,言語實在很難表達



發文: 183
積分: 4
於 2003-11-27 10: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
還有一個地方可以試試
不見得有用但提供給各位作個參考

直接修改mysql的預設編碼
比如
win環境下:
c:\windows\[mysql目錄]\my.ini
1
2
在[mysqld]下面加上 
default-character-set=big5 (或你要的編碼格式)

檔案最下面加
1
2
[client] 
default-character-set=big5 (同上)


(記得reboot mysql)

也有人在jsp學習講議的討論區發表過這個解釋方法
而且比較詳細.如linux/BSD等環境就可以參考
http://www.jsp.mlc.edu.tw/sshowtopic.jsp?topicid=000000000512
Smile


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:marace]
browser

戀香

版主

發文: 3570
積分: 1
於 2003-11-27 11:02 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
marace wrote:
還有一個地方可以試試
不見得有用但提供給各位作個參考

直接修改mysql的預設編碼
比如
win環境下:
c:\windows\[mysql目錄]\my.ini
1
2
在[mysqld]下面加上 
default-character-set=big5 (或你要的編碼格式)

檔案最下面加
1
2
[client] 
default-character-set=big5 (同上)


(記得reboot mysql)

也有人在jsp學習講議的討論區發表過這個解釋方法
而且比較詳細.如linux/BSD等環境就可以參考
http://www.jsp.mlc.edu.tw/sshowtopic.jsp?topicid=000000000512
Smile


我之前也以為要加 ...
結果我沒有加 .. 也是可以正確顯示 .....


reply to postreply to post
作者 Re:tomcat + mysql 的中文編碼整理 (許功蓋問題) [Re:marace]
marace

網路這份憾動力,言語實在很難表達



發文: 183
積分: 4
於 2003-11-27 11: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
marace wrote:

也有人在jsp學習講議的討論區發表過這個解釋方法
而且比較詳細.如linux/BSD等環境就可以參考
http://www.jsp.mlc.edu.tw/sshowtopic.jsp?topicid=000000000512
Smile


原來那討論區不能直接連結
可以到http://www.jsp.mlc.edu.tw/
裡面的討論區搜尋"mysql中文"


reply to postreply to post
go to first page go to previous page  1   2  go to next page go to last page
» JWorld@TW »  Servlet/JSP 討論區

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