【问题标题】:retrieve unicode using asp from sqlserver 2005使用 sqlserver 2005 中的 asp 检索 unicode
【发布时间】:2008-11-28 23:36:56
【问题描述】:

我正在使用以下代码从数据库中检索消息,然后将其写入 html 页面:

Dim strDSN, cnn, cmd
strDSN = "Driver={SQL Server};" & "Server=(local)\sql2k5;" & ...
set cnn = Server.CreateObject("ADODB.Connection")
cnn.ConnectionString = strDSN
cnn.CursorLocation = adUseClient
cnn.Open
set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = cnn
cmd.CommandText = "select Message from tblRecipients where ID = 72"
cmd.CommandType = adCmdText
set getRecordset = Server.CreateObject("ADODB.Recordset")
getRecordset.Open cmd, , adOpenKeyset, adLockReadOnly

Response.write getRecordset("Message")

但是我得到的只是“?????????”。我检查它不是浏览器,那是实际写出来的。

插入我运行的消息 更新 tblRecipients 设置 Message = N'Добре' 其中 ID = 72 在 SQL 服务器管理器中。

关于如何让它正确显示的任何帮助?

【问题讨论】:

    标签: sql-server-2005 unicode asp-classic vbscript


    【解决方案1】:

    您的数据库可能将数据存储在 utf-8 以外的其他文件中(可能是 utf-16 或 ucs 2 ?),而您的 asp 页面(默认情况下)需要 utf-8。这就是为什么您的数据在 SQL 管理工作室中显示正确,但在 ASP 页面中显示不正确的原因。从 SQL Management Studio 查看时,数据库中的 utf-8 数据看起来像时髦的字符。

    我仍在试图弄清楚如何将我的数据存储在 utf-16 中,并允许 asp 页面显示它,而无需在每个 sql 语句中显式转换为 utf-8。更改 asp charset="utf-16" 似乎没有奏效。

    【讨论】:

      【解决方案2】:

      欢迎来到国际化。我整天都在和这个作斗争。

      罗恩是对的。您的数据库排序规则可能设置为 Latin-1 或类似的东西,我相信它等同于 ISO-8859-1。

      但是,您存储的数据将需要更改。例如,如果您要粘贴特殊字符,如智能双引号,则需要在将它们保存到数据库之前对其进行转换。相反,如果您不转换输入的数据,则在直接显示数据库中的数据时,您将不得不使用第三方工具对其进行转换。我遇到了 ChilKat 的一个 COM 对象,我相信它就是这样做的。我找不到任何内置到 Classic ASP 中的东西,它可以从 ISO-8859-1(或任何相关的东西)转换为 UTF-8,反之亦然。

      此外,在您的 HTML 中,您需要将字符集设置为您希望使用的编码类型。

      祝你好运。

      【讨论】:

        【解决方案3】:

        您可以尝试使用SQL Native Client 来查看是否可以为您解决问题,这有点疯狂,但我知道它已经解决了数据类型和经典 ASP 的其他问题。

        【讨论】:

          【解决方案4】:

          解决方案: 伙计,这很奇怪。问题是实际的 ASP 文件是用 ANSI 编码的。显然,这是将文件传递给客户端时使用的编码方式(如果您还记得 asp 文件只是传递给客户端的文件,并被 asp 引擎稍微修改,那么这有点道理)。解决方案是将 ASP 文件的编码更改为 utf-8。因此,当 utf-8 字符在文件中写入客户端时,它们与文件其余部分的编码相匹配,并被浏览器正确读取。

          希望这对下一个人有所帮助。
          干杯,
          安迪。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-10-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-15
            • 2014-09-09
            相关资源
            最近更新 更多