【问题标题】:Reading Unicode strings from SQL Server从 SQL Server 读取 Unicode 字符串
【发布时间】:2016-08-28 20:34:59
【问题描述】:

I know 字符串需要在 SQL Server (2012) INSERT 语句中以 N' 为前缀才能将它们存储为 UNICODE,但它们是否也必须以某种方式检索(SELECT 语句)所以它们是 UNICODE ?

我能够使用 N 表示法正确存储国际字符串,但是当我运行 SELECT 查询以取回记录时,它会以问号形式出现。我的查询很简单。

SELECT COLUMN1, COLUMN2 FROM TABLE1

我正在研究可能导致此问题的其他可能原因,但至少我想消除上面的 SQL 语句。当它们都使用 N 表示法存储 UNICODE 字符串时,它是否应该正确读取 COLUMN1 和 COLUMN2 列?我必须对声明做任何事情来告诉它它们是 UNICODE 吗?

【问题讨论】:

  • it comes as question marks SQL Server Management Studio 或您的应用程序?检查它是否适用于 SSMS,如果是,那么您的应用可能无法正确读取数据(驱动程序、编码、...)
  • @lad2025 我的申请

标签: sql sql-server database select unicode


【解决方案1】:

在管理工作室中,您无需执行任何特殊操作即可显示正确的值。确保表中的列定义为 Unicode 字符串 NVARCHAR 而不是 ANSI 字符串 VARCHAR。

下面的例子演示了这个概念:

    CREATE TABLE UnicodeExample
    (
         MyUnicodeColumn NVARCHAR(100)
        ,MYANSIColumn VARCHAR(100)
    )

    INSERT INTO UnicodeExample
    (
         MyUnicodeColumn
        ,MYANSIColumn
    )
    VALUES
    (
        N'איש'
        ,N'איש'
    )

    SELECT *
    FROM    UnicodeExample

    DROP TABLE UnicodeExample

在上面的示例中,列 MyUnicodeColumn 被定义为 NVARCHAR(100),而 MYANSIColumn 被定义为 VARCHAR(100)。查询将正确返回 MyUnicodeColumn 的结果,但会返回 ???对于 MYANSIColum。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 2013-09-26
    相关资源
    最近更新 更多