2011-06-23 163 views
2

UTF-8編碼字符串目前正在尋找直4小時後,我不得不放棄,問你們。 我有一個非常簡單的表單,它將採取輸入和動作,將其寫入我的Oracle DB(支持UTF-8)。我該如何處理我的servlet

<form action="test.jsp" method='GET' accept-charset="UTF-8"> 
    <label for='NAME'>Name</label><input type="text" id="NAME" name="NAME"/> 
    <button type="submit">Submit</button> 
</form> 

所有我想要做的是形式能夠接受的字符,如é,並將它們存儲在不改變編碼。

我已經嘗試過(與合併)選項,如設置

request.setCharacterEncoding("UTF-8");

或建設有編碼參數一個新的String:

new String(request.getParameter("NAME").getBytes(), "UTF-8")

但它總是在結束了數據庫是這樣的:�?��??(輸入:收藏

任何有關這個問題的幫助將不勝感激。

回答

6

在Tomcat中server.xml,一個URIEncoding="UTF-8"屬性添加到您的Connector像這樣:

<Connector port="8080" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="8443" URIEncoding="UTF-8"/> 

documentation狀態:

這指定用於解碼URI字節的字符編碼 , 後%xx解碼URL。如果不指定 ,則將使用ISO-8859-1。

可以找到一個有用的(略有相關的)SO帖子here

+0

這實際上做的伎倆!雖然設置request.setCharacterEncoding(「UTF-8」)非常重要,這看起來像太陽信息頁看錯選擇不工作後的形式... – tannerli

+0

感謝您的幫助,順便說一句:)這是竊聽我,因爲昨天中午... – tannerli

+0

@tannerli,很高興一直是幫幫我。順便說一句,這個編碼只對參數進行編碼,而不考慮HTTP請求。 –

0

你有過在調試器一看串看起來像插入Java中的數據庫之前?如果它不在那裏混淆,那它就是數據庫的導入功能。你在那裏使用哪個wprapper或者工具?

+0

其實,我不知道該怎麼調試器連接至我的Tomcat服務器,但我已經嘗試過在我能想到的所有方式打印出來到標準輸出,它看起來就好像它已經就「炒」我打電話的request.getParameter() – tannerli

+0

什麼是你的操作系統和在環境中,這是運行 – Andreas