c# 处理oracle数据库字符集是us7ascii 在C#程序中怎么处理才使中文不乱码?

mars_guoting 2009-12-26 05:56:20
c# 和 oracle us7ascii 在处理中文乱码问题
...全文
437 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
vrhero 2009-12-26
  • 打赏
  • 举报
回复
把客户端字符集也设置为US7ASCII即可...但不幸地是你的服务器字符集设置为US7ASCII而你非要存储中文字符则存储的字符编码都是错误的...以后的导出、导入包括升级都会遇到相当大的麻烦...

如果你的数据库还没有正式上线或入库的数据还很少,赶快纠正这一错误...更改服务器字符集为ZHS16GBK或AL32UTF8,并重新生成数据...
mars_guoting 2009-12-26
  • 打赏
  • 举报
回复
没有试出来
  • 打赏
  • 举报
回复
没用过oracle,常用的几个轮流试一下就知道了
由于历史的原因,早期的oracle没有字符集(如oracle6、oracle7、oracle7.1),但有的用户从那时起就使用数据库了, 并用US7ASCII字符集存储了,或是有的用户在创建数据库时,不考虑清楚,随意选择一个默认的字符集,如WE8ISO8859P1或US7ASCII,而这两个字符集都没有汉字编码,虽然有些时候选用这种字符集好象也能正常使用,但用这种字符集存储汉字信息从原则上说就是错误的,它会给数据库的使用与维护带来一系列的麻烦。正常情况下,要将汉字存入数据库数据库字符集必须支持,而将数据库字符集设置为US7ASCII等单字节字符集是不合适的。US7ASCII字符集只定义了128个符号,并不支持汉字。另外,如果在SQL*PLUS能够输入,操作系统缺省应该是支持的,但如果在NLS_LANG字符集设置为US7ASCII,显然也是不正确的,它没有反映客户端的实际情况。但在实际应用汉字显示却是正确的,这主要是因为Oracle检查数据库与客户端的字符集设置是同样的,那么数据在客户与数据库之间的存取过程将不发生任何转换,但是这实际上导致了数据库标识的字符集与实际存入的内容是不相符的。而在SELECT的过程Oracle同样检查发现数据库与客户端的字符集设置是相同的,所以它也将存入的内容原封不动地传送到客户端,而客户端操作系统识别出这是汉字编码所以能够正确显示。

111,123

社区成员

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

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

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