在VB中无法识别word的特殊符号,引起调用Oracle存储过程失败的问题

c104 2007-02-14 05:08:25
程序是这样的:
在word文档中抓取一大段字符串,然后复制给某一个字符串变量strReqQuestion,最后调用存储过程,在oracle数据库中插入记录。

问题是:
在某一段文字中出现了vb无法识别的字符(word中的特殊符号,度,即右上角的句号),调用存储过程时就会失败。该特殊字符取出来以后在字符串中显示是半角的?,asc码也是63。

我确定问题就是出在这个word特殊符号上,但是我应该如何处理strReqQuestion?
用Replace方法把半角问号替换成全角的也没用,处理后的字符串显示出来的时候还是半角的问号。

请各位支招,多谢!
...全文
525 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
vansoft 2007-12-29
  • 打赏
  • 举报
回复
楼上,要判断做什么?
直接替换。没有也不会错。
c104 2007-06-08
  • 打赏
  • 举报
回复
已搞定,字符串入库的时候,查找一下有无unicode为-3988的字符即可,替换掉就不会出错了。

If InStr(myString, ChrW(-3988)) > 0 Then
myString = Replace(myString, ChrW(-3988), "")
End If
lashengcrh 2007-03-23
  • 打赏
  • 举报
回复
我在Excel中发现同样问题,Excel中看不见的字符,Vb中却读出'?'。该如何解决?
supergreenbean 2007-02-18
  • 打赏
  • 举报
回复
那么你的visual basic是中文版vb6 sp5以上版本么?
supergreenbean 2007-02-16
  • 打赏
  • 举报
回复
奇怪,度的符号在vb里面取出来没啥问题啊。你存储过程的参数类型也没错吧?
我QQ:140419 加我吧,QQ上聊快
c104 2007-02-16
  • 打赏
  • 举报
回复
字段类型 VARCHAR2(4000)
c104 2007-02-16
  • 打赏
  • 举报
回复
多谢supergreenbean!
存储过程的参数类型没问题的,字符串中不含特殊符号的话可以正常插入记录。

其他的双字节特殊字符也有,vb同样不能正常识别,但是插入oracle时不会抱错。如“上下叠加的+和-”,vb抓到以后显示的就变成间括号了(也许后面还有个空格,间括号是单字节的)。

不好意思,公司里用不了QQ...
supergreenbean 2007-02-15
  • 打赏
  • 举报
回复
应该是双字节的问题,你那oracle不支持双字节的么?
smapple 2007-02-15
  • 打赏
  • 举报
回复
不知道是不是字符集的问题呢.在度后加几个空格,试试.
sql server中是没有问题的..呵呵.
sybase中有些特殊符号后加空格才可以插入.oracle中也试试不知道是否行的通.
c104 2007-02-15
  • 打赏
  • 举报
回复
VB里面读取word对象。然后直接将选定的range.text赋值给字符串变量。
如:
Set rng = wddoc.Range(StartPos, EndPos)
strReqQuestion=rng.Text

“度”是在原word文档中插入符号中的特殊字符,在word中应该叫“不间断空格”
supergreenbean 2007-02-15
  • 打赏
  • 举报
回复
那你那表的字段类型呢?
c104 2007-02-15
  • 打赏
  • 举报
回复
查了一下Oracle,NLS_CHARACTERSET=ZHS16GBK
这应该是双字节的字符集吧?
supergreenbean 2007-02-14
  • 打赏
  • 举报
回复
你是怎么抓取的?你的 度 的符号是从“符号”里面插入的符号么

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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