急!求教关于C#调用OCX中文不能正常显示的问题!

pencil001 2008-01-01 03:17:05
我现在通过C#调用一ocx的一个方法,其中有一个参数类型定义为const VARIANT& Var

我在vc里使用VARIANT变量,设定VT_BSTR,能正常显示中英文
我在Delphi里将integer(PChar(str))传进去也能正常显示中英文

当我将该ocx引入工程时,自动封装后的该参数类型是object
我直接传递string类型时,英文能正常显示,但是中文不行;后来我尝试了BStrWrapper和Marshal.StringToHGlobalAuto,均同样问题
我还尝试将string转换成char[]和byte[],也尝试过Encoding的各种方法,但是连英文都显示乱码

请大家帮忙!

注:我现在用的是vs2005,是winform程序,该ocx是用vc6开发的
...全文
179 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
iyranly 2008-01-05
  • 打赏
  • 举报
回复
Delhpi 的 数据类型 和 .Net 当中的数据类型之间的转换有一定差距的
有些数据之间的转换到现在还没有好的解决方案
比如 String类型

楼主,搜索一下数据转换,会得到一些解决方案,但是都不太完善,尽量用吧
pencil001 2008-01-05
  • 打赏
  • 举报
回复
还是没人回答阿。。。。
pencil001 2008-01-03
  • 打赏
  • 举报
回复
再自己顶
pencil001 2008-01-02
  • 打赏
  • 举报
回复
Marshal.StringToBSTR也是一样的,中文还是不行

编码我也尝试过很多了,比如System.Text.Encoding.GetEncoding("gb2312").GetBytes(str)
pencil001 2008-01-02
  • 打赏
  • 举报
回复
输入参数,输入一串字符串,会在ocx中显示这种字符串,利用以上那些方法,中文显示出来是乱码,比如“中”显示为“-N”

当我将该ocx引入工程时,.net自动将VARIANT类型封装为object
whycom 2008-01-02
  • 打赏
  • 举报
回复
你是输入参数,还是输出参数,我试过VARIANT 类型参数,.net 会给你自动封装好,显示错误是在什么地方看到的,请说详细
pencil001 2008-01-02
  • 打赏
  • 举报
回复
在自己顶
shinaterry 2008-01-01
  • 打赏
  • 举报
回复
编码问题....
whycom 2008-01-01
  • 打赏
  • 举报
回复
try
Marshal.StringToBSTR
pencil001 2008-01-01
  • 打赏
  • 举报
回复
自己顶。。。

110,533

社区成员

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

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

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