为什么VC返回的BSTR类型用PB的String类型接收后出现汉字乱码,英文正常?

yuddian 2006-08-26 01:58:55
为什么VC返回的BSTR类型用PB的String类型接收后出现汉字乱码,英文正常?
...全文
685 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuddian 2006-09-09
  • 打赏
  • 举报
回复
up
yuddian 2006-09-08
  • 打赏
  • 举报
回复
ti AFIC,
这样改也不行的,如果参数只是[out],不[in],结果也是一样的。仍然会有乱码或者字符被截断。
有什么其它好的方法么?
AFIC 2006-09-08
  • 打赏
  • 举报
回复
关键就在in,返回会自动转换的,
你只要把in改用LPCTSTR 返回用BSTR*,我觉得应该就没问题了。
yuddian 2006-09-07
  • 打赏
  • 举报
回复
to AFIC(AFIC),
在ACTIVEX的COM接口参数类型中,只有BSTR* 和 LPCTSTR 用来传递字符串。而后者只能够[in],不能够[out]一个参数,目前我需要从VC6的控件中保存一个字符串返回出来。而且这个字符串可能包含有中文汉字。
如果没有汉字,是没有问题的。
AFIC 2006-09-07
  • 打赏
  • 举报
回复
最好是用这个:
LPTSTR
yuddian 2006-09-07
  • 打赏
  • 举报
回复
Up
yuddian 2006-09-07
  • 打赏
  • 举报
回复
to AFIC(AFIC),如果在VC6上作修改,接口该如何进行修改呢?
AFIC 2006-09-07
  • 打赏
  • 举报
回复
参数格式[in,out],那没办法了,要么pb升级,要么vc改下接口。
yuddian 2006-09-07
  • 打赏
  • 举报
回复
问题描述如下:
1 用VC6写的一个ActiveX控件;
2 调用这个控件的程序是用PB7写的;
3 其中控件的有些接口是 BSTR* 参数格式[in,out],从PB7要把字符串传到VC6中,同时需要把处理之后的结果返回到PB7的

应用层.如果都使用英文字符的话,没有什么问题.如果其中包含有中文字符,那么就会出问题.
问题的表现就是出现乱码或者字符被截断.
wepwep 2006-09-07
  • 打赏
  • 举报
回复
你尝试测试中英文结合字符串
wepwep 2006-09-07
  • 打赏
  • 举报
回复
你把正确的字符串和乱码后的字符串都贴上来看看啊
yuddian 2006-09-07
  • 打赏
  • 举报
回复
谢谢 wepwep(德鲁伊) 的回复,有一点启示,我会继续寻找方法.如果身边有什么PB的高手,也请帮忙打听一下,谢谢先.
wepwep 2006-09-07
  • 打赏
  • 举报
回复
我对BSTR不懂,不过如果PB出现乱码那么应该是字符串中有错误的数据,汉字是2个字节的,不管是不是unicode的,系统是判断第一个字节的第8位(如10000000)是否为1,如果是1那么就是汉字,是和第二个字节合起来组成一个汉字。那么如果在汉字的字符串中插入了一个第8位为1的字节,那么整个汉字字符串就全乱了,直到遇到一个第8位为0的才会恢复。
具体怎么解决我帮不上忙了,不知道出现乱码的情况是怎么样了,不过提醒一下,在PB10以前的版本处理汉字的函数和处理英文的函数不一样的
yuddian 2006-09-07
  • 打赏
  • 举报
回复
我现在使用的PB7的版本.是不是PB7的版本就无法实现Unicode的操作了呀?
AFIC 2006-08-28
  • 打赏
  • 举报
回复
BSTR实际上是一个COM字符串,是Unicode的字符串加上长度信息。
因为是unicode的,所以推荐pb10以后的版本来调用该函数。
polestarxu 2006-08-27
  • 打赏
  • 举报
回复
是否跟字库有关系呢?
yuddian 2006-08-27
  • 打赏
  • 举报
回复
Up
yuddian 2006-08-26
  • 打赏
  • 举报
回复
谢谢大家,继续关注
圣殿骑士18 2006-08-26
  • 打赏
  • 举报
回复
up下
  • 打赏
  • 举报
回复
不会呀,只能帮你UP
加载更多回复(2)

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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