sql server 拉丁文字符乱码

开发中遇到了这样一个问题,保存文本到数据库,文本内容为德文,里面还有这样的符号:geben können,就是o上面两个点,应该是拉丁文符号吧(不是很清楚),保存到数据库中类型为text的列中出现乱码,拉丁符号变成了一个问号,像这样:Einensch?nen。

百度后尝试将text更换为nvarchar(max),问的得到解决。

看到有的博主说修改排序规则也可以解决问题,当时试过没什么作用,现在有时间了,想验证一下这个方法是否可行,于是参考下面的帖子:
SQLSERVER中文乱码问题
Sql Server 中文乱码问题
进行如下验证:

  1. 新建数据库 dt_test_1:
    采用默认排序规则 chinese_prc_ci_as;
  2. 新建表tmp1:
create table tmp1(
	id int primary key identity(1,1),
	name1 varchar(100) null,
	name2 nvarchar(100) null
);
  1. 插入中文和西文数据:
insert into tmp1(name1,name2) values('叶秋','无下限');
insert into tmp1(name1,name2) values('Einenschönen','Einenschönen');
insert into tmp1(name1,name2) values(N'Einenschönen',N'Einenschönen'); //此处加了 N
  1. 输出结果:
    在这里插入图片描述
    不在字符串前加N,不论是varchar类型还是nvarchar类型,保存西文特殊字符都会出现乱码,加了N以后,nvarchar类型的列成功保存特殊字符,但是varchar类型的列仍旧出现了乱码;
  2. 修改数据库dt_test_1:
    排序规则修改为 latin1_general_ai_cs
  3. 插入中文和西文数据:
insert into tmp1(name1,name2) values('魏琛','无下限');
insert into tmp1(name1,name2) values('魏琛',N'无下限');
insert into tmp1(name1,name2) values('Einenschönen','Einenschönen');
insert into tmp1(name1,name2) values(N'Einenschönen',N'Einenschönen');
  1. 输出结果:
    在这里插入图片描述
    排序规则修改为拉丁文后,varchar和nvarchar保存中文乱码,保存西文特殊字符乱码,字符串前加N以后,varchar和nvarchar可以保存中文,但是varchar保存西文特殊字符仍旧乱码;

所以说帖子里讲的将字符类型改为nvarchar后插入中文正常了,可是现在还是出现乱码了。我之前试过在中文排序规则下插入带有西文特殊字符的串到nvarchar中,没出现乱码,可是现在同样的西文字符串插入nvarchar,却出现了乱码,真让人费解。

SQL Server 保存特殊字符时乱码

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值