如果我在将所有字符串写入数据库之前对所有字符串使用 htmlEncode 方法,这是否会消除将字符串数据存储为 nvarchar 数据类型的需要?
IE。varchar 数据类型中不存在的所有字符是否都具有可以存储在 varchar 数据类型中的编码值?
如果我在将所有字符串写入数据库之前对所有字符串使用 htmlEncode 方法,这是否会消除将字符串数据存储为 nvarchar 数据类型的需要?
IE。varchar 数据类型中不存在的所有字符是否都具有可以存储在 varchar 数据类型中的编码值?
您的 SQL 服务器很可能对 char 和 varchar 使用 Windows-1252 编码。
如果字符不在 Windows-1252 中,则将其存储为?在 char 和 varchar 中标记。
通过插入测试
values (nchar(10000)), ('?')
HtmlEncode(nchar(1000)) 是 nchar(1000),如果你将它存储在 varchar 中,它将被存储为?。
因此,您的问题的直接答案是肯定的,每个 Unicode (nvarchar) 都有一个 varchar 编码值。
但这并不意味着它将解码回原始值。