【发布时间】:2009-10-07 15:37:04
【问题描述】:
我有一个经典的 ASP 页面被发布到。数据以 UTF-8 形式发布(我可以在 Fiddler 中看到)。然后我打开一个到数据库的 ADODB 连接并将数据存储在 VARCHAR 字段中。如果数据可以用 8859-1 表示(例如 iñtërnâtiônàlizætiøn),它会正确存储在 varchar 字段中。如果我尝试无法映射到 8859 的字符串(例如 Здравствуйте!),我会得到 ????????????!。这一切都是有道理的,因为 varchar 字段不能保存 unicode。我也明白使用 nvarchar 字段应该使我能够存储 utf-8 字符串。
我的问题是这样的。 SQL Server 或 ADODB 对象中的哪些设置控制如何将字符串从 UTF-8 转换为 8859-1? VBScript (ASP) 是否将字符串作为 UTF-8 发送到 ADODB.Connection.Execute(或者我认为它实际上在做什么 - UTF-16)并且数据库本身会处理转换?这是否由数据库的排序规则控制(本例中为 SQL_Latin1_General_CP1_CI_AS)?
【问题讨论】:
-
FWIW、IIRC、ASP 在内部都使用 UTF-16。
标签: asp-classic character-encoding ado