2012-09-30 181 views
0

我正在使用javascript和ajax框架到客戶端和Java glassfish到服務器端。Html特殊字符和Javascript

我試圖發郵件與這樣的文字:

"àèìòù !"£$%&/()=?^" 

但是當我閱讀我的文章請求(轉換成Java服務器端)我有這樣的結果:

"à èìòù !"£$%&/()=?^" 

我需要將所有html特殊字符轉換爲相應的html代碼,例如:

& -> & 
à -> à 

我該怎麼辦? Thare是一些執行此操作的JavaScript庫?

+5

您不需要轉換特殊字符。你確實需要解決你的編碼不​​匹配問題。 – Jon

回答

-1

是的!有一些可用的方法,一個例子是replace();方法。 更多信息here

4

歡迎來到有史以來最愚蠢的決定之一。 servlet規範定義默認編碼應該是ISO-8859-1(而不是UTF-8)。

因此,爲了讓您的java應用程序在POST後正確讀取這些字符,您需要設置一個Servlet過濾器,以將字符集強制爲UTF-8。發生這種情況是因爲大多數(如果不是全部的話)瀏覽器使用UTF-8,因爲默認字符集未設置Accept-Charset標頭。

這是一件很常見的事情,tomcat捆綁了其中一個篩選器(How do I change how POST parameters are interpreted?)。如果您打算部署到不同的servlet容器,我建議您編寫自己的過濾器(只需複製粘貼來自tomcat的過濾器)。

+0

我試着將CharserFilter類設置到我的web.xml頁面中,並添加了元標記。但仍然沒有工作。你能建議我一個教程嗎?我正在使用glassfish ... – CeccoCQ

+0

首先,檢查過濾器聲明和映射是否位於web.xml的頂部。否則,我不知道glassfish的charset /編碼教程。我建議你谷歌[玻璃魚字符集編碼過濾器](https://www.google.com/search?q=glassfish+charset+encoding+filter)。另外,如果您在找到答案時能更新您的問題,我將不勝感激。我討厭這個問題! :'(。 – Augusto