oracle中全角汉字被截断的乱码问题

gunziyang 2015-02-28 09:32:55
表a的spec字段长度为20,该字段存在全角汉字被截断的乱码问题。例如,导入时某个数据长度为21,最后一个汉字占第20和21字节,因此在导入数据库时,该汉字只保留了第一个字节,第二个字节被截断了,在oracle数据库中就显示为乱码。

现在要用C#从数据库中读取该字段,然后由用户选择某一项,再用该字段的内容去匹配表b的spec字段(也有乱码)。

问题是,现在我读取表a的spec字段后,C#自动把乱码转成了\0,再回去比对就不相等了。如果用like的话,可能又不止匹配上一项。

例如,表a:“中国?”,表b:"中国?",?表示乱码
C#读取表a数据后变成"中国\0",显然此时"中国\0"不等于"中国?"

请问有什么解决方法吗?
不考虑把数据库的乱码全部删去的办法。因为导入程序还会源源不断的产生乱码,而且导入程序我们无法更改。
...全文
223 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你这不是编码问题,你这是长度被截断问题啊,汗,这东西长度超出不会异常??还是你保存时用了参数化,自动截断长度了?要么你把varchar改成nvarchar,要么把字段长度加长
gunziyang 2015-02-28
  • 打赏
  • 举报
回复
数据库编码是AMERICAN_AMERICA.US7ASCII,这个就更不可能改了
  • 打赏
  • 举报
回复
数据库存储可以设定编码方式的,估计目前你的数据库设置的编码方式不支持gb2312

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧