作者JeremyJoung (J.J.)
看板java
標題Re: [JSP ] 輸出中文的問題
時間Sat Oct 1 04:00:39 2011
TOMCAT request預設編碼為latin7(? 至少不是latain1
resin預設編碼為utf8
在server.xml的系統設定檔中 <host>標籤中有設定request預設編碼的參數
另外
servlet編碼 又是另外一回事 使用new String(getBytes(), )可以解決問題
但是 不是根本辦法
另外 在java中 錯誤的編碼會導致文字被拋棄 直接輸出無法修復的"?"字元
所以萬能的拉丁7其實或許是種安全的手段 因為任何byte都可以被表示 還可以事後救援
輸入編碼utf8 給予big5會獲得一團? 完全不給救
這種問題我遇過 而且是沒有源碼的servlet 一整個就是哭出來
※ 引述《rexkimta (冷杉林)》之銘言:
: ※ 引述《rexkimta (冷杉林)》之銘言:
: : 雖然標題用jsp,但接下來提到的程式是用servlet做的。
: : 我的情況是:
: : 有個網頁form.html中的form會傳一個變數name給program這個servlet。
: : 如果name是中文的話,
: : 在program那裡顯示出來就會是亂碼。
: : 在form.html的meta tag、
: : servlet response的header、
: : servlet 產生的html meta tag
: : 都有設定UTF-8,檔案本身的編碼也都設定成utf-8了。
: : 請問那裡還可能有問題呢?
: : 註:只有變數有問題,其他中文字都沒事。
: : 像是「小明」(%E5%B0%8F%E6%98%8E)會變成「å°? 」(後面變成問號了。)
: 找到一些網頁,不過都沒有解決問題……
: http://goo.gl/9jROz
: http://www.jguru.com/faq/view.jsp?EID=1030399
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.0.157
→ joetsai:latin7有解??? 10/01 10:23
→ JeremyJoung:拉丁的話 至少每個byte都可以被強制表示出來只是亂碼 10/01 22:58
※ 編輯: JeremyJoung 來自: 59.120.0.157 (10/01 23:00)
→ JeremyJoung:只要有亂碼而不是"?" 就有機會使用getBytes()矯正 10/01 23:01
推 joetsai:感謝 之前搞編碼時快被搞死 下次有機位就用這招囉~ 10/02 01:05
→ joetsai:另外那時候才發現 標準寫法為UTF-8 小寫也可以!! 但若寫成 10/02 01:07
→ joetsai:UTF8 或是 utf8 在某些情況下會亂碼!!! 10/02 01:08
→ JeremyJoung:某些伺服器對於大小寫很敏感 甚至連include都要求同步 10/04 12:45