You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SQL Server 2016执行俄文查询输出全为问号,如何正确显示原字符串?

解决SQL Server 2016中俄文显示为问号的问题

这个问题我碰到过好多次了,本质是Unicode字符的处理方式不对导致的。SQL Server里,非Unicode类型(比如varchar/char)无法正确存储俄文这类超出ASCII范围的字符,所以会显示成问号。按下面的步骤来就能解决:

  • 给字符串加N前缀
    你的查询语句里,字符串前面必须加上N前缀,告诉SQL Server这是一个Unicode字符串(对应nvarchar类型)。修改后的语句应该是:

    select N('все магазины Сильпо') as test
    

    不加N的话,SQL Server会把字符串转换成默认的非Unicode编码,俄文字符就会丢失变成?

  • 确保存储列的类型正确
    如果是从表中查询数据,那存储这些俄文的列必须定义为nvarcharnchar类型,而不是varchar/char。如果列类型不对,就算查询时加了N前缀,存储的时候已经丢失了字符,还是会显示问号。

  • 检查查询工具的字体设置
    最后确认一下你的查询工具(比如SSMS)用的字体支持俄文。打开SSMS的「工具」->「选项」->「环境」->「字体和颜色」,选择一个支持Unicode的字体(比如Consolas、Lucida Console都是没问题的),避免因为字体不支持导致显示异常。

内容的提问来源于stack exchange,提问作者Daxesh Radadiya

火山引擎 最新活动