2010-03-18 40 views
1

我試圖從我的頁面發送特殊字符,如西班牙字符到JSP頁面作爲窗體參數。當我嘗試獲取我發送的參數時,它顯示爲「?」 (問號)。 java.net上線搜索後,我才知道,我應該有我的sun-web.xml中無法使用sun-web.xml設置字符編碼

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 8.0 Servlet 2.4//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_4-0.dtd"> 
<sun-web-app> 
<locale-charset-info default-locale="es"> 
<locale-charset-map locale="es" charset="UTF-8"/> 
<parameter-encoding default-charset="UTF-8"/> 
</locale-charset-info> 
</sun-web-app> 

以下條目但它並沒有使用這種方法還是性格都按「?」工作。

回答

3

試試這個,在將它們發送到表單或數據庫之前,請確保使用UTF-8編碼字符。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 8.0 Servlet 2.4//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_4-0.dtd"> 

<sun-web-app> 
<locale-charset-info default-locale=""> 
<locale-charset-map locale="" charset=""/> 
<parameter-encoding default-charset="UTF-8"/> 
</locale-charset-info> 
</sun-web-app> 

這使服務器強制執行字符編碼,無論你設置了什麼。

+0

因此,如果您省略語言環境和字符集映射,請求參數編碼將實際應用於Glassfish?這對我來說似乎很奇怪。 – BalusC 2010-03-18 20:28:01

1

您只配置了請求參數編碼。根據症狀,您還需要配置響應編碼。在JSP頁面通常就足夠了以下行添加到頂部:

<%@page pageEncoding="UTF-8" %> 

更多的背景信息和技術解決方案,可以發現here

當您使用數據庫時,另一個可能的原因是數據庫未配置爲使用UTF-8,這樣字符已經存儲爲垃圾,無論您如何查詢它,它總是會返回垃圾。使用獨立的數據庫管理工具進行審查。如果確實如此,那麼您還需要設置數據庫表編碼。

相關問題