asp.Net下短信猫发送短信中的中文乱码解决

来源:互联网 发布:软件著作权网上公示 编辑:程序博客网 时间:2024/06/05 08:26

 现象:
用c#编码调用短信猫发送包含中文字符的短信,但收到的总是乱码或问号(?),使用了Default, Unicode-16等多种编码方式仍然无效,而其他非中文字符都可以正常接收。
另外,在超级终端中直接输入AT指令发送中英文,可以正常接收显示。
我用的是TC35芯片的短信猫。

解决过程:
并不是所有的.Net项目都会出现这样的情况,VC++,VB编译后的程序执行也没有出现这样的情形。
于是考虑编写一个win32动态库来封装短信发送调用,.Net项目中再调用这个动态库。

主要步骤如下,

1、VC6.0 创建一个动态连接库,选择File->New菜单,弹出New对话框。在Projects标签页下,选择“Win32 Dynamic-Link Library”。创建一个空的动态库工程,记住动态库工程的名称 tc35.

2、加入一个.cpp文件,可以任意起名,注意如果没有这个文件,就不能生成动态库。
   具体的定义自己的函数
int MySendMsg(int iPort,char* sMsg,char* sPhone)
{
  // - 发送短消息
  return SendMsg(iPort,sMsg,sPhone,1,true);
}

3、加入一个.def文件,必须是这个后缀名
复制下面的代码,注意LIBRARY后面就是动态库的名字(动态库工程的名字)



LIBRARY tc35

DESCRIPTION     'My Tc35 Dll'
EXPORTS

MySendMsg

4、引用静态连接库:AscendSMS.lib

5、编译成功

6、c#中进行声明,
[DllImport("tc35.dll")]
  public static extern int MySendMsg(int iPort,string sMsg, string sPhone);