You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2019:西里尔排序规则varchar列插入希腊字符失败求解

西里尔排序规则varchar列插入希腊字母乱码问题解答
  • 核心原因:西里尔排序规则(Cyrillic_General_CI_AS)的varchar列与希腊字符不兼容。varchar类型依赖排序规则对应的代码页,Cyrillic_General_CI_AS对应的是Windows代码页1251,这个代码页仅包含西里尔字符和基础拉丁字符,没有希腊字母的编码空间,所以插入希腊字符时会被替换成问号(???)。

  • 不存在同时保留varchar类型和西里尔排序规则的有效解决方案。代码页的限制无法突破,要么放弃varchar改用nvarchar,要么放弃西里尔排序规则改用包含希腊字母的排序规则(但这样西里尔字符会出现乱码)。

  • 最优解决方案:将列类型改为nvarchar,同时保留西里尔排序规则。nvarchar基于Unicode存储,不受单一代码页限制,能同时兼容西里尔和希腊字符,且排序规则仍能正常生效。修改后的代码如下:

CREATE TABLE dbo.tmp (
    id int NOT NULL
    , name nvarchar(75) collate Cyrillic_General_CI_AS
)

INSERT INTO dbo.tmp (id, name)
VALUES (1, N'Εργ Μας');

SELECT *
FROM dbo.tmp;

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:12:39