Discussion:
[JSP ] 傳UTF-8符號到Java Bean
(时间太久无法回复)
嘖嘖
2007-05-16 15:04:52 UTC
Permalink
我使用form將輸入的資料(utf-8)傳送到.jsp檔案
而.jsp那邊的java bean 輸出剛剛傳入的長度以及內容

在Java bean程式內用.toCharArray()
來測試傳入的長度.而全形的符號長度為3

要怎樣使得傳入的String經.toCharArray()轉換後
一個符號是一個長度呢?
因為如果是單獨的JAVA檔案會把一個全形符號轉成一個char來運作

--
有查到好像可以用URLEncoder
只是不知道該怎麼運用在 輸入的form網頁
或顯示的jsp網頁
煩請指教

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.91.101.253
愚人
2007-05-16 15:20:16 UTC
Permalink
※ 引述《paulyanzi (嘖嘖)》之銘言:
: 我使用form將輸入的資料(utf-8)傳送到.jsp檔案
: 而.jsp那邊的java bean 輸出剛剛傳入的長度以及內容
: 在Java bean程式內用.toCharArray()
: 來測試傳入的長度.而全形的符號長度為3
: 要怎樣使得傳入的String經.toCharArray()轉換後
: 一個符號是一個長度呢?
: 因為如果是單獨的JAVA檔案會把一個全形符號轉成一個char來運作

對 utf-8 來說全形符號印出來應該是 1 個符號 1 個長度

所以,你應該先確定,你真的用的是 utf-8 嗎?

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.232.234.21
嘖嘖
2007-05-16 15:28:18 UTC
Permalink
※ 引述《qrtt1 (愚人)》之銘言:
: ※ 引述《paulyanzi (嘖嘖)》之銘言:
: : 我使用form將輸入的資料(utf-8)傳送到.jsp檔案
: : 而.jsp那邊的java bean 輸出剛剛傳入的長度以及內容
: : 在Java bean程式內用.toCharArray()
: : 來測試傳入的長度.而全形的符號長度為3
: : 要怎樣使得傳入的String經.toCharArray()轉換後
: : 一個符號是一個長度呢?
: : 因為如果是單獨的JAVA檔案會把一個全形符號轉成一個char來運作
: 對 utf-8 來說全形符號印出來應該是 1 個符號 1 個長度
: 所以,你應該先確定,你真的用的是 utf-8 嗎?
確定.單獨java程式的話輸入全形或是中文用.toCharArray()轉換後
長度是看有幾個字..EX:愚人..toCharArray() 的length為2
(ch[0]=愚 ch[1]=人)

如果我用Java bean去測試
public int getSA() { //test length
char ch[]=strin.toCharArray() ;

return strin.length();
}

一個全形會變成3個長度.
現在就卡在這邊.看怎樣才能轉回正常的..這樣程式那邊處理起來應該就差不多了
(ch[0]就會是亂碼)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.91.101.253
※ 編輯: paulyanzi 來自: 219.91.101.253 (05/16 23:28)
愚人
2007-05-16 15:36:50 UTC
Permalink
※ 引述《paulyanzi (嘖嘖)》之銘言:
: ※ 引述《qrtt1 (愚人)》之銘言:
: : 對 utf-8 來說全形符號印出來應該是 1 個符號 1 個長度
: : 所以,你應該先確定,你真的用的是 utf-8 嗎?
: 確定.單獨java程式的話輸入全形或是中文用.toCharArray()轉換後
: 長度是看有幾個字..EX:愚人..toCharArray() 的length為2
: (ch[0]=愚 ch[1]=人)
: 如果我用Java bean去測試
: public int getSA() { //test length
: char ch[]=strin.toCharArray() ;
: return strin.length();
: }
: 一個全形會變成3個長度.
: 現在就卡在這邊.看怎樣才能轉回正常的..這樣程式那邊處理起來應該就差不多了
: (ch[0]就會是亂碼)

<%
out.println(request.getCharacterEncoding());
%>

印出來看看,是不是 utf-8

如果是 Null 就看你 server 設定是什麼,通常預設不會是 utf-8

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.232.234.21
嘖嘖
2007-05-16 15:50:17 UTC
Permalink
※ 引述《qrtt1 (愚人)》之銘言:
: ※ 引述《paulyanzi (嘖嘖)》之銘言:
: : 確定.單獨java程式的話輸入全形或是中文用.toCharArray()轉換後
: : 長度是看有幾個字..EX:愚人..toCharArray() 的length為2
: : (ch[0]=愚 ch[1]=人)
: : 如果我用Java bean去測試
: : public int getSA() { //test length
: : char ch[]=strin.toCharArray() ;
: : return strin.length();
: : }
: : 一個全形會變成3個長度.
: : 現在就卡在這邊.看怎樣才能轉回正常的..這樣程式那邊處理起來應該就差不多了
: : (ch[0]就會是亂碼)
: <%
: out.println(request.getCharacterEncoding());
: %>
: 印出來看看,是不是 utf-8
: 如果是 Null 就看你 server 設定是什麼,通常預設不會是 utf-8
確實為null 就是這個原因嗎?!
而該怎麼解決呢?

ps.前面有說錯了..是測傳入String的長度
假設輸入"我" 則測出來的長度會是3
導致無法繼續做其他處理

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.91.101.253
愚人
2007-05-16 15:53:47 UTC
Permalink
請學習網頁編碼設定
以及使用適當的編碼存檔

※ 引述《paulyanzi (嘖嘖)》之銘言:
: 確實為null 就是這個原因嗎?!
: 而該怎麼解決呢?
: ps.前面有說錯了..是測傳入String的長度
: 假設輸入"我" 則測出來的長度會是3
: 導致無法繼續做其他處理

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.232.234.21
嘖嘖
2007-05-16 16:10:07 UTC
Permalink
該輸入網頁htm 以及顯示網頁jsp
都確定是utf-8
都有設定charset=UTF-8

用getter傳回整個字串也沒問題
唯獨字串在bean內處理有問題

※ 引述《qrtt1 (愚人)》之銘言:
: 請學習網頁編碼設定
: 以及使用適當的編碼存檔
: ※ 引述《paulyanzi (嘖嘖)》之銘言:
: : 確實為null 就是這個原因嗎?!
: : 而該怎麼解決呢?
: : ps.前面有說錯了..是測傳入String的長度
: : 假設輸入"我" 則測出來的長度會是3
: : 導致無法繼續做其他處理

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.91.101.253
愚人
2007-05-16 16:23:37 UTC
Permalink
http://www.javaworld.com.tw/jute/post/view
?bid=6&id=192960&sty=3&age=0&tpg=1&ppg=1#192960

※ 引述《paulyanzi (嘖嘖)》之銘言:
: 該輸入網頁htm 以及顯示網頁jsp
: 都確定是utf-8
: 都有設定charset=UTF-8
: 用getter傳回整個字串也沒問題
: 唯獨字串在bean內處理有問題

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.232.234.21
Terry
2007-05-16 16:39:57 UTC
Permalink
※ 引述《paulyanzi (嘖嘖)》之銘言:
: 該輸入網頁htm 以及顯示網頁jsp
: 都確定是utf-8
: 都有設定charset=UTF-8
: 用getter傳回整個字串也沒問題
: 唯獨字串在bean內處理有問題
: ※ 引述《qrtt1 (愚人)》之銘言:
: : 請學習網頁編碼設定
: : 以及使用適當的編碼存檔
JSP 由你的AP server 來compile 所以.class 是以utf-8編碼.
bean, 你九成是沒有指定.class 的編碼.
所以就便用系統預設的, 例如windows 就是cp950

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.150.56

继续阅读narkive:
Loading...