我正在尝试使用sp_executesql
来运行命令,但我遇到了一个问题,即非英文字符(又名中文和日文)更改为 ??? 跑的时候。
sql server 2008R2 & 2012
示例代码
DECLARE @text nvarchar(30) = N'select ''J こんにちは C 你好'''
SELECT @text
SELECT N'J こんにちは C 你好'
exec sp_executesql @text
exec sp_executesql N'select ''J こんにちは C 你好'''
J= 日语 'Hi' C = 中文 'Hi' 由谷歌翻译处理用于测试目的
输出
------------------------------
select 'J こんにちは C 你好'
------------
J こんにちは C 你好
------------
J ????? C ??
------------
J ????? C ??
正如您看到的那样,当自然运行或选择代码时,输出按预期返回,但是一旦它通过 sp_executesql 传递,它返回为 ? 人物。值得注意的是,如果您尝试发送 varchar 而不是 nvarchar,它会出错,因此它会挑衅地使用 unicode。
为输入尝试了几种不同的排序规则,但这似乎没有任何改变
你应该在 SELECT中传递你的 unicode
UNICODE
字符N
: