sql-server - sql server 不处理非 ASCII 字符
问题描述
我们平台的数据库已经停止接受非 ASCII 字符,尽管它以前可以工作并且尽管充分使用了 nvarchar 类型。我能够做的最小复制是来自 Management Studio 查询窗口的这个简单演示:
DECLARE @X nvarchar(max) = 'Activbasē ਪਾਕਿਸਤਾਨ ਪੰਜਾਬ ਦਾ ਦਾਰੁਲ'
PRINT @X
SELECT @X AS X
-- Output (for table and PRINT): Activbase ???????? ????? ?? ?????
我在用着:
- SQL Server 版本:Microsoft SQL Server 2017 (RTM-GDR) (KB4505224) - 14.0.2027.2 (X64)
- Management Studio 版本:v18.4(组件版本15.0.18206.0)
(迄今为止的最新版本)
ANSI 查询窗口的查询选项如下:
- SET QUOTED_IDENTIFER = on
- 设置 ANSI_NULL_DFLT_ON = on
- 设置 ANSI_PADDING = on
- 设置 ANSI_WARNINGS = on
设置 ANSI_NULLS = on
SET IMPLICIT_TRANSACTIONS = 关闭
- SET CURSOR_CLOSE_ON_COMMIT = 关闭
提前致谢。
解决方案
您犯了一个小错误,您错过了N
表明您的字符串是 Unicode(国家语言字符集)的前缀:
DECLARE @X nvarchar(max) = N'Activbasē ਪਾਕਿਸਤਾਨ ਪੰਜਾਬ ਦਾ ਦਾਰੁਲ'
PRINT @X
SELECT @X AS X
输出:
Activbasē ਪਾਕਿਸਤਾਨ ਪੰਜਾਬ ਦਾ ਦਾਰੁਲ
推荐阅读
- javascript - Firebase 规则仅访问自己的数据、公共数据或特定数据
- c - GCC(主干)-fanalyzer [CWE-401] 误报?
- javascript - 如何在 Google Cloud Shell 中验证 Firebase 用户
- maven - 将依赖项上传到不同的 Maven 仓库
- python - 使用 Python 从 Datepicker 小部件选择中分配 Excel 单元格值
- docker - NGINX localhost 上游配置
- android - android:progressBackgroundTint 的数据绑定问题
- arrays - 尝试在 React Native 中更新 useState 数组中的某些字段
- postgresql - Azure 中 Docker 上的 Postgres
- postgresql - 请求帮助,postgres