网格结果中的 SSMS 和 Unicode 字体

Tim*_*Tim 5 ssms

我写了这个简单的更新查询:

\n\n
update foo set test =\'\xe8\xa4\xa0\xef\x81\xa2\xe0\xb0\x93\xef\xbf\xbd\xe1\xb5\x82\xeb\xb1\x97\xed\x85\xac\xe3\xb0\x97\' where id = 1\n
Run Code Online (Sandbox Code Playgroud)\n\n

[test] 是 nvarchar(16) 列。它将包含一个加密值。

\n\n

在 SSMS (10.50) 中,我已将网格结果和文本结果的字体设置为 Lucida Sans Unicode。字形 (\xe8\xa4\xa0\xef\x81\xa2\xe0\xb0\x93\xef\xbf\xbd\xe1\xb5\x82\xeb\xb1\x97\xed\x85\xac\xe3\xb0\ x97) 显示在查询编辑器窗口中。但网格结果和文本结果窗口总是显示简单的问号“?????????”而不是\xe8\xa4\xa0\xef\x81\xa2\xe0\xb0\x93\xef\xbf\xbd \xe1\xb5\x82\xeb\xb1\x97\xed\x85\xac\xe3\xb0\x97。

\n\n

在“工具”->“选项”中更改字体后,我关闭并打开 SSMS。

\n\n

任何建议,将不胜感激。我通常不需要理解本专栏的内容,但在测试以确保客户端应用程序发送正确的数据时,看到问号以外的其他内容会很有帮助。

\n

Gor*_*son 3

如果要在语句中插入 Unicode 文本,则需要提供以下update形式的 Unicode 字符串:N\'...\'

\n\n
update foo set test = N\'\xe8\xa4\xa0\xef\x81\xa2\xe0\xb0\x93\xef\xbf\xbd\xe1\xb5\x82\xeb\xb1\x97\xed\x85\xac\xe3\xb0\x97\' where id = 1\n
Run Code Online (Sandbox Code Playgroud)\n\n

否则,如果 SQL Server 无法将字符映射到相应的非 Unicode 字符,即使在列中,字符也会真正转换为问​​号nvarchar

\n