我知道這個問題幾乎是一樣古老世界和存在於網頁成千上萬的答案,但我仍然無法找到是什麼在我的情況的問題,爲什麼字符顯示爲黑色問號( ):(多語種網站 - 性格enconding
我們有一個多語言網站,目前支持10種語言,某些字符顯示不正確(ве сией,聯合國際),可能會出現在非拉丁語中的常規字符和其他字符同一頁面上的話,正確顯示相同的字符。在拉丁語中,所有的特殊和普通字符正確顯示。
我試圖與編碼玩,但是當在一個地方它解決了問題出現在其他地方的問題。
這裏,我的編碼配置如何:
1)在MS SQL Server中,我們使用NVARCHAR(MAX)列和SQL_Latin1_General_CP1_CI_AS
歸類。
2)在web應用程序中,在web.config文件中我有:<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
。
3)在頁面本身,我們有<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
。
在響應報頭,鍍鉻所示:Content-Type:text/html; charset=utf-8
。
我想念什麼?爲什麼我仍然看到那些黑色的問號?我應該檢查/更改以正確顯示所有字符。
感謝
UPDATE
我發現了一個問題,它是完全不傳輸編碼相關。我認爲這個問題與編碼有關,它是如何通過數據庫 - > ASP.NET - >瀏覽器,但經過大量調試後,我發現問題在解決,輸出如何寫入HttpContext.Current.Response.Filter
....我們有我們的自定義過濾器,並以某種方式傳遞給過濾器的寫入方法的緩衝區(byte[]
)。它破壞了Unicode字符串的數組,所以有時候字符串的最後一個字符被翻譯爲亂碼。我仍然沒有找到如何正確解決它,但現在,我可以禁用我們的過濾器,並且不再有任何問題。
感謝所有。
我在MS SQL中沒有發現任何UTF-8歸類。我發現使用「BIN2」排序規則的建議,但它沒有幫助。 – 2013-04-22 10:32:06
我發現[this](http://stackoverflow.com/questions/12512687/sql-server-utf8-howto),現在甚至有更多理由不碰MSSQL,即使是10'駁船杆。 ICK。 – Quentin 2013-04-22 10:36:41
@Quentin其實我不認爲問題是在DB內,因爲同一個字符可以在某個時候出現正確的問題,如果一個字符是OK,那麼另一個字符就是問號......另外,當我在其他地方使用數據庫的內容,我沒有看到任何問題:( – 2013-04-22 10:40:44