sql 服务器不处理非 ASCII 字符
sql server not handling non-ascii characters
我们平台的数据库已停止接受非 ASCII 字符,尽管它在之前和完全使用 nvarchar 类型时都可以工作。我能够做的最小复制是来自 Management Studio 查询的简单演示 window:
DECLARE @X nvarchar(max) = 'Activbasē ਪਾਕਿਸਤਾਨ ਪੰਜਾਬ ਦਾ ਦਾਰੁਲ'
PRINT @X
SELECT @X AS X
-- Output (for table and PRINT): Activbase ???????? ????? ?? ?????
我正在使用:
- SQL 服务器版本:Microsoft SQL Server 2017 (RTM-GDR) (KB4505224) - 14.0.2027.2 (X64)
- Management Studio 版本:v18.4(组件版本 15.0.18206.0)
(两个最新版本)
ANSI 查询 window 的查询选项如下:
- SET QUOTED_IDENTIFER = on
- SET ANSI_NULL_DFLT_ON = on
- 设置ANSI_PADDING=开启
- SET ANSI_WARNINGS = on
SET ANSI_NULLS = on
设置IMPLICIT_TRANSACTIONS=关闭
- 设置CURSOR_CLOSE_ON_COMMIT=关闭
提前致谢。
你犯了一个小错误,你错过了 N
前缀来表明你的字符串是 Unicode(国家语言字符集):
DECLARE @X nvarchar(max) = N'Activbasē ਪਾਕਿਸਤਾਨ ਪੰਜਾਬ ਦਾ ਦਾਰੁਲ'
PRINT @X
SELECT @X AS X
输出:
Activbasē ਪਾਕਿਸਤਾਨ ਪੰਜਾਬ ਦਾ ਦਾਰੁਲ
我们平台的数据库已停止接受非 ASCII 字符,尽管它在之前和完全使用 nvarchar 类型时都可以工作。我能够做的最小复制是来自 Management Studio 查询的简单演示 window:
DECLARE @X nvarchar(max) = 'Activbasē ਪਾਕਿਸਤਾਨ ਪੰਜਾਬ ਦਾ ਦਾਰੁਲ'
PRINT @X
SELECT @X AS X
-- Output (for table and PRINT): Activbase ???????? ????? ?? ?????
我正在使用:
- SQL 服务器版本:Microsoft SQL Server 2017 (RTM-GDR) (KB4505224) - 14.0.2027.2 (X64)
- Management Studio 版本:v18.4(组件版本 15.0.18206.0)
(两个最新版本)
ANSI 查询 window 的查询选项如下:
- SET QUOTED_IDENTIFER = on
- SET ANSI_NULL_DFLT_ON = on
- 设置ANSI_PADDING=开启
- SET ANSI_WARNINGS = on
SET ANSI_NULLS = on
设置IMPLICIT_TRANSACTIONS=关闭
- 设置CURSOR_CLOSE_ON_COMMIT=关闭
提前致谢。
你犯了一个小错误,你错过了 N
前缀来表明你的字符串是 Unicode(国家语言字符集):
DECLARE @X nvarchar(max) = N'Activbasē ਪਾਕਿਸਤਾਨ ਪੰਜਾਬ ਦਾ ਦਾਰੁਲ'
PRINT @X
SELECT @X AS X
输出:
Activbasē ਪਾਕਿਸਤਾਨ ਪੰਜਾਬ ਦਾ ਦਾਰੁਲ