Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 我的nvarchar列应该有多大才能存储最多255个字符?_Sql Server_Unicode - Fatal编程技术网

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

Sql server 我的nvarchar列应该有多大才能存储最多255个字符?,sql-server,unicode,Sql Server,Unicode,我需要在nvarchar类型的数据库列中存储255个字符。这些字符是UTF-8,可以是多字节的。我不是最好的字符编码,所以我不确定这是否有意义。我想持有255个字符,可以在任何语言,等等 255个字符 255个字符 您可以在中找到一些简单易懂的关于不同Unicode编码的背景信息,这是我在一个开源项目手册中写的一章。这些背景资料将有助于你理解我回答中的一些细节 Simmo提供的关于nvarchar的链接指出,nvarchar以UCS-2格式存储。因此,在将UTF-8字符串存储到数据库之前,需要将

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

255个字符


255个字符

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

Simmo提供的关于nvarchar的链接指出,nvarchar以UCS-2格式存储。因此,在将UTF-8字符串存储到数据库之前,需要将其转换为UCS-2字符串。你可以找到C++代码来做转换。 一个微妙但重要的一点是,转换代码将实际转换为UTF-16,UTF-16是UCS-2 UTF-16的超集,支持使用代理项对,而UCS-2不支持。我不使用SQL Server,所以我不知道如果您尝试在其中插入一些代理项对,它是否会抱怨。也许这里的其他人可以证实它是否会

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


另一方面,如果SQL Server允许使用代理项对,那么您可能希望使用nvarchar510来允许每个字符都由代理项对组成的可能性极小。

您可以在,这是我在一本开源项目手册中写的一章。这些背景资料将有助于你理解我回答中的一些细节

Simmo提供的关于nvarchar的链接指出,nvarchar以UCS-2格式存储。因此,在将UTF-8字符串存储到数据库之前,需要将其转换为UCS-2字符串。你可以找到C++代码来做转换。 一个微妙但重要的一点是,转换代码将实际转换为UTF-16,UTF-16是UCS-2 UTF-16的超集,支持使用代理项对,而UCS-2不支持。我不使用SQL Server,所以我不知道如果您尝试在其中插入一些代理项对,它是否会抱怨。也许这里的其他人可以证实它是否会

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


另一方面,如果SQL Server允许使用代理项对,则您可能希望使用nvarchar510,以允许每个字符都由代理项对组成的可能性极小。

我无法确定nvarchar255是否正常。nvarchar将数据存储为UTF-16,不是UTF-8。我不能肯定nvarchar255应该是好的。nvarchar将数据存储为UTF-16,而不是UTF-8。