2011-04-21 77 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)以允许(远程)的可能性,每一个字符将被由代理对。

相关问题