阅读" What is the difference between char, nchar, varchar, and nvarchar in SQL Server?"我有一个问题。
我正在使用MS SQL Server 2008 R2
var lastValue;
setInterval(function() {
var curValue = $('#test').html();
if(lastValue !== curValue) {
lastValue = curValue;
// Do whatever it is you want to do with the new value here.
}
});
返回
oldDivChange = divChange;
divChange = function(aArgs, callback) {
oldDivChange(aArgs);
var newValue = $('#test').html();
callback(newValue);
};
为什么第二个DATALENGTH(C1)是12?
答案 0 :(得分:2)
在INSERT
中,您要将文字从unicode转换为C1
的中文代码页。很可能这个过程改变了文本,有些东西可能会丢失。
这是SQL Fiddle。
您可以看到第二个字符华
在3F
中存储为varchar
。您还可以看到最后一个字符国
也在3F
中存储为varchar
。 3F
是?
的代码。当Windows尝试将文本从unicode转换为代码页并且某些字符无法在给定代码页中表示时,转换函数(很可能是WideCharToMultiByte
)会为此类字符添加?
。
又一个例子。最后一个字符和
在A94D
中编码为varchar
,8C54
编号为nvarchar
。如果你在字符映射中查找它将显示这些代码(unicode和代码页):
另见:
What does it mean when my text is displayed as Question Marks?
https://www.microsoft.com/middleeast/msdn/Questionmark.aspx
任何时候必须显示Unicode数据,它们可能在内部 使用WideCharToMultiByte API从Unicode转换。任何时候 字符无法在当前代码页上表示,它将是 用问号(?)代替。
这正是您在N'中华人民共和国'
列中存储unicode文字varchar
时发生的情况。 unicode文本将转换为多字节,并且某些字符无法在该代码页中表示,并且会被问号?
替换。