用sql*loader导入半个中文字符的问题

abcynic 2003-04-14 11:59:57
导入一个纯文本接口文件,在某个字段末尾出现半个中文字符CA(hex),在UltraEdit下这半个中文字符与下一数字31(hex)被认作一个汉字CA31(hex),显示为'?'。
oracle服务器端的语言设置为“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”。
如果oracle817客户端的NLS_LANG设置为“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”时,调用sql*loader导入这个接口文件,会有错误提示“多字节字符错误”。
如果oracle817客户端的NLS_LANG设置为“AMERICAN_AMERICA.US7ASCII”则导入文件时无错误提示,但查oracle数据库中表,导入的字段是乱码。
NLS_LANG设置为UTF8、WE8ISO8859P1同样无法导入到数据库。现请教高手有无其它方法可以通过更改oracle客户端NLS_LANG或改变调用sql*loader参数的方式使这个接口文件顺利导入。
ps:如果接口文件的半个汉字不是出现在字段末尾,则导入没有问题。
...全文
129 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
MicroMouse 2003-04-16
  • 打赏
  • 举报
回复
写个程序删除半个汉字就可以了。
不要改字符集,数据库本身就保留的是半个汉字,通过改字符集是无法把半个汉字去掉的。
ckc 2003-04-14
  • 打赏
  • 举报
回复
我们实际工作中也遇到过这样的问题,解决方法是要求对方重新传过数据来。
或者你做个程序删除多余的半个汉字吧
abcynic 2003-04-14
  • 打赏
  • 举报
回复
我不需要他导入成一个,只要能导入不出错就行了。
导进去一两个乱码也可以接受,现在是根本导不进去啊。
三杯倒 2003-04-14
  • 打赏
  • 举报
回复
问题不是出在sql*loader上

导出的文件只有半个汉字,导入当然不能变成一个了

abcynic 2003-04-14
  • 打赏
  • 举报
回复
这是一个接口文件,怎么产生半个我也不清楚。
我们的接口字段是定死了的,对方可能定义的字段可能比我们定义的接口长,导出接口文件的时候他们就产生了半个汉字字符。


yuaiwu 2003-04-14
  • 打赏
  • 举报
回复
为什么会出现半个汉字?

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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