问题描述
表a的spec字段长度为20,该字段存在全角汉字被截断的乱码问题。例如,导入时某个数据长度为21,最后一个汉字占第20和21字节,因此在导入数据库时,该汉字只保留了第一个字节,第二个字节被截断了,在oracle数据库中就显示为乱码。现在要用C#从数据库中读取该字段,然后由用户选择某一项,再用该字段的内容去匹配表b的spec字段(也有乱码)。问题是,现在我读取表a的spec字段后,C#自动把乱码转成了,再回去比对就不相等了。如果用like的话,可能又不止匹配上一项。例如,表a:“中国?”,表b:"中国?",?表示乱码C#读取表a数据后变成"中国",显然此时"中国"不等于"中国?"请问有什么解决方法吗?不考虑把数据库的乱码全部删去的办法。因为导入程序还会源源不断的产生乱码,而且导入程序我们无法更改。
解决方案
解决方案二:
数据库存储可以设定编码方式的,估计目前你的数据库设置的编码方式不支持gb2312
解决方案三:
数据库编码是AMERICAN_AMERICA.US7ASCII,这个就更不可能改了
解决方案四:
你这不是编码问题,你这是长度被截断问题啊,汗,这东西长度超出不会异常??还是你保存时用了参数化,自动截断长度了?要么你把varchar改成nvarchar,要么把字段长度加长
时间: 2024-09-16 07:18:29