我的nvarchar列应该有多大才能存储最多255个字符?

时间:2011-04-21 17:13:24

标签: sql-server unicode

我需要在nvarchar类型的数据库列中存储255个字符。它们的字符是UTF-8,可以是多字节的。我不是最好的字符编码,所以我不确定这是否有意义。我想保留255个可以使用任何语言的字符等。

2 个答案:

答案 0 :(得分:3)

您可以在this中找到有关不同Unicode编码的一些简单易懂的背景信息,这是我在开源项目手册中写的一章。该背景信息将帮助您理解我的答案中的一些细节。

Simmo提供的documentation关于nvarchar的链接指出nvarchar以UCS-2格式存储。因此,在将UTF-8字符串存储到数据库之前,需要将其转换为UCS-2字符串。您可以找到C ++代码来执行转换here

一个微妙但重要的一点是,转换代码实际上会转换为UTF-16,它是UCS-2的超集(UTF-16支持使用代理对,而UCS-2则不支持)。我不使用SQL Server,所以我不知道如果你试图插入一些代理对,它是否会抱怨。 (也许这里的其他人可以确认是否会这样做。)

如果 SQL Server不允许代理对,那么应用程序可以支持的语言范围将受到限制,但至少您知道nvarchar(255)足以满足您的需求。

另一方面,如果 SQL Server允许使用代理项对,那么您可能希望使用nvarchar(510)来允许每个字符的(远程)可能性由代理对组成。

答案 1 :(得分:1)