2012-09-18 109 views
1

我目前正在處理的網站收集各種來源的數據(輸入人類)。數據存儲在數據庫的Nvarchar字段中。目前該網站通過meta標籤指定該字符集是UCS-2。到現在爲止,該網站已經要求英文答案。不過,儘管我們會允許/要求至少某些字段以其母語輸入(即在這種情況下爲中文)。根據網站上的一些研究和其他帖子,似乎UCS-2和UTF-16在技術上存在一些小差異,但它們幾乎完全相同。如果重要的話,這是一個運行在SQL Server數據庫上的asp.net網站。所以我的問題是:我應該將UCS2還是UTF16轉換爲UTF?

是否有一個理由讓我改變meta標記來指定UTF-16?

我會與文字方式顯示的任何問題,如果我更改編碼? (我覺得目前的數據應顯示相同的,因爲它的大多數/所有英語,但我想確認)

+1

,你必須在你的HTML元標記應爲你使用的HTML文檔的編碼的編碼。你當然不應該錯配兩者,所以你的選擇是非常有限的。 – usr

+2

其實,我很驚訝你首先指定了UCS-2。你的服務器發送到瀏覽器的HTML實體是每個字符兩個字節的UCS-2? – usr

+0

我不知道。我沒有構建原始母版頁。我只知道我們需要做這個更新,所以我檢查並注意到它是UCS-2。如果沒有問題,我會改變它。 – William

回答

1

UCS-2是UTF-16的子集,嚴格 - 它可以在基本多文種字符進行編碼平面(即從U + 0000直到U + FFFF)。如果您需要在輔助平面(包括一些相對罕見的中文字符)中表示字符,則必須使用兩個16位代碼單元(「代理」)對進行編碼,如果是這樣,您的數據將無效UCS-2但必須聲明爲UTF-16。

如果您可以輕鬆地將編碼規範切換爲UTF-16,那麼除非您的數據被不知道「UTF-16」含義的古代軟件所使用,否則應該沒有什麼理由立即這樣做。

+0

現在它只是母版頁中的元標記。因此,如果不會導致數據庫中當前數據出現任何問題,那麼將其更改爲UTF-16就太過簡單了。我不知道我們會得到什麼中文字符,但似乎是因爲我期待他們,所以改變它可能是一個好主意;正確?它只在網站上使用,所以我認爲任何現代化的瀏覽器都可以使用UTF-16。 – William

+0

是的,但像@usr我想知道你是否真的在網絡服務器上提供16位每字符的數據 - 這有點不尋常。您確定您可以看到的元標記沒有被HTTP響應頭中的字符集規範覆蓋嗎? –

+0

它可能很好。當我進行此更新時,我將向Web配置中添加一個全球化部分,並同時指定UTF-16。這應該強制他們是相同的正確的?編輯:只檢查網站標題;它指定的是utf-8,但meta標籤是ucs-2。我會解決它們都是UTF-16 – William