[英]How does SQL Server store these Unicode characters into a column that is VARCHAR(MAX) and not NVARCHAR(MAX)
[英]How big should my nvarchar column be to store a maximum 255 characters?
我需要在nvarchar類型的數據庫列中存儲255個字符。 它們的字符是UTF-8,可以是多字節的。 我不是最好的字符編碼,所以我不確定這是否有意義。 我想要保留255個可以使用任何語言的字符等。
你可以找到關於不同的Unicode編碼一些簡單易懂的背景信息, 這 ,這是第一章手冊中寫了一個開放源代碼項目。 該背景信息將幫助您了解我的答案中的一些細節。
Simmo提供的有關nvarchar
文檔鏈接指出nvarchar
以UCS-2格式存儲。 因此,在將UTF-8字符串存儲到數據庫之前,需要將其轉換為UCS-2字符串。 你可以在這里找到C ++代碼進行轉換。
一個微妙但重要的一點是轉換代碼實際上將轉換為UTF-16,它是UCS-2的超集(UTF-16支持使用代理對,而UCS-2則不支持)。 我不使用SQL Server,所以我不知道如果你試圖插入一些代理對,它是否會抱怨。 (也許這里的其他人可以確認它是否會)。
如果 SQL Server不允許代理對,那么應用程序可以支持的語言范圍將受到限制,但至少您知道nvarchar(255)
足以滿足您的需求。
另一方面, 如果 SQL Server允許使用代理項對,那么您可能希望使用nvarchar(510)
來允許(遠程)每個字符由代理項對組成的可能性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.