2011-06-13 40 views
0

我得到一張地圖,從Java,要求他下一句話:谷歌地圖的字符編碼問題

<a href="http://maps.google.com/maps?q=<%=(infoHotel.getHotelType().getHotelTypeDescription() == null ? "" :infoHotel.getHotelType().getHotelTypeDescription()) + "+" + (infoHotel.getHotelName() == null ? "" : infoHotel.getHotelName())%>@<%=lat%>,<%=lon%>&ie=UTF-8&oe=UTF-8&=13&hl=<%=langmap%>" target="_blank" style="color:#000000"> 

它去完善。但是當我點擊谷歌地圖的放大地圖鏈接時,如果導航是IE,Firefox或Chrome,我會得到下一個。我把一個類型的表給你:

IE: 地址欄:http://maps.google.com/maps?q=HÔTEL+TRYP BARCELO [email protected],2.0692870393395424&ie=UTF-8&oe=UTF-8&z=13&hl=es
搜索欄:H?TEL TRYP BARCELO [email protected],2.0692870393395424

鉻: 地址欄:http://maps.google.com/maps?q=H%C3%94TEL+TRYP%20BARCELO%[email protected],2.0692870393395424&ie=UTF-8&oe=UTF-8&z=13&hl=es
搜索欄:HÔTEL TRYP BARCELO [email protected],2.0692870393395424

火狐: 網址欄:http://maps.google.com/maps?q=H%D4TEL+TRYP%20BARCELO%[email protected],2.0692870393395424&ie=UTF-8&oe=UTF-8&z=13&hl=es
搜索欄:H?TEL TRYP BARCELO [email protected],2.0692870393395424

請注意,Chrome是唯一一款完美的作品。 「酒店」和「酒店」,無論是在網吧和搜索欄。但看看IE或FireFox做了什麼。

JSP線是上面所有的,其他的我把它們複製粘貼。

任何人都可以幫助我嗎?

回答

1

首先,查看地址欄來診斷這是不夠的。有些瀏覽器在地址欄中顯示一個內容(未編碼),但在HTTP請求中發送不同的內容(編碼)。要絕對確定發送給服務器的內容是否使用FireBug或同等產品查看上的實際請求。

另外,請注意百分比編碼是字符集特定的。也就是說,用UTF-8編碼的百分比與用iso-8859-1編碼的百分比不同。

當瀏覽器發出請求時,他們傾向於使用當前頁面的字符集來編碼響應。這對於多部分表單提交等是正確的。如果你沒有用anchor標記指定頁面的編碼,瀏覽器將猜測一個編碼(通常是iso-8859-1)。在你的情況下,Firefox似乎選擇了iso-8859-1(或UTF-16),而Chrome選擇了UTF-8。

看到這裏的Ô字符的細節:http://www.fileformat.info/info/unicode/char/d4/index.htm

而且,看來你指定UTF-8編碼作爲您的要求的參數。

我建議改變你的JSP,以確保:與錨標記在頁面上

  1. 內容被編碼成UTF-8。
  2. 您正在發送適當的Content-Type標題(和/或元標記)以使瀏覽器知道該頁面是UTF-8。
1

關於URL - 您不能在URL中放置非ASCII字符,您應該在返回它們之前對它們執行URL Encoding。此外,空格也是非法的,應該進行URL編碼(空格編碼爲%20

Chrome和FireFox可能已經足夠聰明地爲您執行URL編碼,但它不是瀏覽器的標準。 。

關於搜索欄 - 您如何將結果放在那裏?你是否自己複製粘貼或者是否有問題?