2011-04-21 25 views
1

我需要在nvarchar類型的數據庫列中存儲255個字符。他們的字符是UTF-8,可以是多字節。我不是字符編碼最好的,所以我不確定這是否合理。我想抱着255個字符,可以是任何語言等我的nvarchar列應該多大才能存儲最多255個字符?

+0

我真的很確定nvarchar(255)應該沒問題。 – DForck42 2011-04-21 17:15:24

+0

'nvarchar'將數據存儲爲UTF-16,而不是UTF-8。 – Gabe 2011-04-21 17:31:11

回答

3

您可以在this中找到一些關於不同Unicode編碼的簡單明瞭的背景信息,這是我在開源項目手冊中編寫的章節。該背景信息將幫助您瞭解我答案中的一些細節。

關於約nvarchar由Simmo提供的鏈接指出nvarchar以UCS-2格式存儲。因此,您需要先將UTF-8字符串轉換爲UCS-2字符串,然後再將它們存儲到數據庫中。你可以找到C++代碼來做這個轉換here

微妙而重要的一點是,轉換代碼實際上會轉換爲UTF-16,它是UCS-2的超集(UTF-16支持使用代理對,而UCS-2則不支持)。我不使用SQL Server,所以我不知道它是否會投訴,如果你試圖插入一些代理對。 (也許這裏的其他人可以確認它是否會)。

如果 SQL服務器不允許代理對,那麼就會出現在你的應用程序可以支持的語言範圍的限制,但至少你知道nvarchar(255)足以滿足您的需求。

在另一方面,如果SQL服務器允許使用代理對,那麼你可能想使用nvarchar(510)以允許(遠程)的可能性,每一個字符將被由代理對。

相關問題