将长度为20的一个字符串保存到SQL2005对应的varchar字段里,VFP读取过来之后该字符串的值被SQL2005“私自改变”了。
m._字符=CHR(174)+CHR(137)+CHR(163)+CHR(122)+CHR(111)+CHR(151)+CHR(136)+CHR(145)+CHR(98)+CHR(100)+;
CHR(191)+CHR(125)+CHR(174)+CHR(137)+CHR(163)+CHR(122)+CHR(111)+CHR(151)+CHR(201)+CHR(228)
长度=20
将m._字符保存到DBF文件的C(20)字段中正常,保存到SQL2000的varchar(20)字段也正常。
把SQL2000下的这个正常的数据库附加到SQL2005之后:这个字段内容就“不能”修改了,一旦修改SQL2005就有可能会修改它。
试验一:m._字符不变直接更新到SQL2005对应字段中
m._字符=CHR(174)+CHR(137)+CHR(163)+CHR(122)+CHR(111)+CHR(151)+CHR(136)+CHR(145)+CHR(98)+CHR(100)+;
CHR(191)+CHR(125)+CHR(174)+CHR(137)+CHR(163)+CHR(122)+CHR(111)+CHR(151)+CHR(201)+CHR(228)
在VFP中读取该字段的值发现:最后一个字符的ASC值被SQL2008修改成了32。
经过测试发现:最后一个字符ASC大于等于129,SQL2005就会把它变成32
但也不是所有最后一位ASC是228的就一定会被改变成32。
试验二:20个字符的ASC都是228,保存到SQL2005,读取出来正常。
_字符=CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+;
CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)
试验三:将倒数第4个字符的ASC改成111,保存到SQL2005,读取出来之后,最后一个字符的ASC变成了32。
_字符=CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+;
CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(228)+CHR(111)+CHR(228)+CHR(228)+CHR(228)
这个现象不是网上说的中文字符保存到SQL2005中,读取之后看到的是乱码,用修改排序规则的方法解决。
SQL2005为啥有时候会把最后一个字符修改呢?