看板 java 關於我們 聯絡資訊
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