如何在VARCHAR中存储字符128到255 ..?
SQL似乎将其中一些更改为char(63)'?'。我不确定它是否与整理有关? UTF-8? N '..'?我试过COLLATE Latin1_General_Bin,不确定它是否支持扩展的ascii ..
显然可以使用NVARCHAR,但从理论上说这也适用于VARCHAR ..?
答案 0 :(得分:3)
存储在ASCII 0-127字符范围之外的varchar / char列中的字符由与排序规则关联的代码页确定。代码页未明确定义的字符被以太网映射到相似的字符,或者当没有时,'?'。
您可以使用此查询列出排序规则以及相关的代码页:
SELECT name, description, COLLATIONPROPERTY(name, 'CodePage') AS CodePage
FROM fn_helpcollations();
答案 1 :(得分:0)
VARCHAR肯定会存储扩展ASCII,但它取决于与排序规则关联的代码页。我正在使用使用代码页1252的Latin1_General_100_BIN。
https://en.wikipedia.org/wiki/Windows-1252
根据此代码页,以下字符未定义:
129,141,143,144,157
实际上,看起来SQL从128到159排除了大多数字符。简单的解决方案就是删除这些字符。