小编lun*_*ign的帖子

SQL Server - 将varchar转换为另一个排序规则(代码页)以修复字符编码

我正在查询使用SQL_Latin1_General_CP850_BIN2排序规则的SQL Server数据库.其中一个表行的varchar值包含+/-字符(Windows-1252代码页中的十进制代码177).

当我直接在SQL Server Management Studio中查询表时,我得到一个乱码而不是此行中的+/-字符.当我将此表用作SSIS包中的源时,目标表(使用典型的SQL_Latin1_General_CP1_CI_AS排序规则)最终会得到正确的+/-字符.

我现在必须构建一个直接查询源表而不使用SSIS的机制.我怎么做到这一点,我得到正确的字符而不是乱码?我的猜测是我需要将列转换/转换为SQL_Latin1_General_CP1_CI_AS排序规则,但这不起作用,因为我不断得到一个胡言乱语的字符.

我试过以下没有运气:

select 
columnName collate SQL_Latin1_General_CP1_CI_AS
from tableName

select 
cast (columnName as varchar(100)) collate SQL_Latin1_General_CP1_CI_AS
from tableName

select 
convert (varchar, columnName) collate SQL_Latin1_General_CP1_CI_AS
from tableName
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

sql-server collation character-encoding

20
推荐指数
3
解决办法
11万
查看次数

标签 统计

character-encoding ×1

collation ×1

sql-server ×1