2011-09-05 22 views
1

我的JSP頁面未顯示拉丁字符。美洲變成了美國。 我已經把每個JSP的頂部:未顯示ISO-8859-1字符

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%>` 

,並在web.xml文件的頂部:

<?xml version="1.0" encoding="ISO-8859-1"?> 

還試圖與數據庫的連接設置:

jdbc:mysql://localhost:3306/database3?charSet=ISO8859-1 

而且我還它配置爲在項目的,但沒有成功特性ISO-8859-1,雖然我的數據庫表顯示就好了拉丁字符。

我錯過了什麼?

的狀態在我的數據庫是:

C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql.exe Ver 14.14 Distrib 5.5.15, for Win32 (x86) 
Connection id: 6 
Current database:  database3 
Current user:   [email protected] 
SSL:     Not in use 
Using delimiter:  ; 
Server version:   5.5.15 MySQL Community Server (GPL) 
Protocol version:  10 
Connection:    localhost via TCP/IP 
Server characterset: latin1 
Db  characterset: utf8 
Client characterset: utf8 
Conn. characterset: utf8 
TCP port:    3306 
Uptime:     12 min 22 sec 
Threads: 2 Questions: 102 Slow queries: 0 Opens: 50 Flush tables: 1 Open tables: 27 Queries per second avg: 0.137 

在我的表中的狀態是:

| Name  | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time   | Update_time | Check_time | Collation  | Checksum | Create_options | Comment | 
+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+ 
| address | InnoDB |  10 | Compact  | 4 |   4096 |  16384 |    0 |  16384 | 4194304 |    5 | 2011-09-07 18:46:49 | NULL  | NULL  | utf8_general_ci |  NULL |    |   | 

正如你所看到的,整理是utf8_general_ci

+0

您是否包含元標記? –

+0

@Daniel:無關緊要,當通過HTTP提供內容時忽略。 – BalusC

+0

也許問題不是數據庫,而是Web容器?你有沒有檢查過[Tomcat的如何在任何地方使用UTF-8](http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8) - 其他容器將有類似的文檔/程序。我傾向於在每個新項目中忘記我的'CharacterEncodingFilter'。 –

回答

2

... 美國轉而進入調幅?哥斯達黎加 ...

... 雖然我的數據庫表中顯示的是拉丁字符就好 ...

那人物在你的數據庫表中顯示得很好,你得到的?作爲結果,表示你的數據庫表是實際上其存儲在不同的編碼,最有可能的UTF -8(這是現在推薦的編碼來獲得world domination)。

更改一切是UTF-8,這個問題應該消失。這篇針對Java EE web開發者的文章應該給予很好的介紹:Unicode - How to get the characters right?

+0

我已經將它改爲UTF-8,現在América在每個瀏覽器上都變成了Am,rica – Thiago

+0

這個逗號對確定問題的原因沒有幫助(閱讀:查找最初編碼的字符集)。你在使用什麼操作系統平臺?什麼是平臺的默認字符集?你檢查/更改MySQL DB編碼嗎?你檢查/更改MySQL表編碼嗎?你檢查/更改了JDBC驅動程序編碼嗎?您是否檢查/更改JSP/Servlet HTTP響應編碼? – BalusC

+0

是的,我已將所有這些更改爲UTF-8。所有這些都在ISO-8859-1的第一條消息中,然後我將它們更改爲UTF-8。我用'?charSet = ISO8859-1'更改了數據庫,而我正在使用Windows 7 32位 – Thiago

0

BalusC 可能有正確的答案。但是,也要注意現代瀏覽器將ISO-8859-1誤解爲Windows代碼頁1252(出於歷史原因),並且這兩種編碼之間存在小的差異。所以,如果你的數據真的在ISO-8859-1編碼的,那麼你的運氣了 - 你無法服務於這個編碼,則需要重新編碼所有的數據(然後你應該移動到UTF-8 )。

+0

這是真的,但是這兩種編碼共享'**'的相同**代碼點:U + 00E9'。另請參閱http://en.wikipedia.org/wiki/ISO/IEC_8859-1#Codepage_layout和http://en.wikipedia.org/wiki/Windows-1252#Codepage_layout。 – BalusC

+0

@BalusC這就是爲什麼我暗示你的答案是正確的。 ;-) –