2009-11-16 56 views
3

我有一些HTML代碼存儲在一個Java.lang.String變量中。我將該變量寫入文件,並在將字符串變量的內容寫入文件系統上的文件時將編碼設置爲UTF-8。我打開那個文件,一切看起來都很棒,例如→顯示爲右箭頭。Java字符串編碼爲UTF-8

然而,如果相同的字符串(包含相同的內容)被用於通過一個jsp頁面呈現內容在瀏覽器中,字符,如→顯示爲一個問號(?)

當在存儲內容String變量,我要確保我使用:的

String myStr = new String(bytes[], charset) 

而不只是:

String myStr = "<html><head/><body>&rarr;</body></html>"; 

有人能告訴我爲什麼字符串內容獲取寫入文件系統,但不會在jsp /瀏覽器中呈現?

謝謝。

+1

看起來你沒有在頁面的標題中提供正確的「charset」。嘗試將瀏覽器中的編碼更改爲UTF-8 – 2009-11-16 23:18:55

+1

您不應更改瀏覽器中的編碼。您應該*指示*瀏覽器通過相應地設置響應編碼來使用正確的編碼。 – BalusC 2009-11-16 23:20:45

+0

如果您的其他評論表明,您在服務器端看不到字符,那麼接下來要檢查的是如何訪問該字節數組。你在讀文件嗎?你是否設置了編碼?我理所當然地認爲charset等於'「UTF-8」'。 – Yishai 2009-11-16 23:26:10

回答

4

但在jsp /瀏覽器中不呈現?

您還需要設置響應編碼。

<meta http-equiv="content-type" content="text/html; charset=utf-8"> 
+0

當我嘗試使用System.out.println(...)在控制檯上打印java字符串變量的內容時,我看到「?」而不是右箭頭,所以我的猜測是JSP會得到問號,這就是爲什麼它在瀏覽器中顯示問號的原因。我認爲這個問題出現在我的java代碼中,也許我需要用其他方式指定String內容的編碼。 – 2009-11-16 23:21:53

+1

然後控制檯也應該配置爲使用UTF-8。你可以在這裏找到更多的背景信息和詳細的解決方案:http://balusc.blogspot.com/2009/05/unicode-how-to-get-characters-right.html希望這有助於。 – BalusC 2009-11-16 23:27:21

1

可能性:

  1. 瀏覽器不會在JSP中,你可以使用

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

    這實際上已經爲HTML <head>設置以下meta標籤相同的效果做到這一點支持UTF-8

  2. 您的HTTP頭中沒有Content-Type: text/html; charset=utf-8