📄 如何在vb中将汉字编码与unicode相互转换方法.txt
字号:
★★★【字体:小 大】
如何在vb中将汉字编码与unicode相互转换方法
作者:佚名 文章来源:http://www.sendsms.cn 点击数:1802 更新时间:2004-11-24
将uniCode转化为中文的代码
以下是将uniCode转换为中文的代码。
function TfrmMain.ReadHex(AString: string): integer;
begin
Result:=StrToInt('$'+AString)
end;
function TfrmMain.UnicodeToAnsi(Unicode: string): string;
var
s:string;
i:integer;
j,k:string[2];
begin
i:=1;
s:='';
while i j:=Copy(Unicode,i+2,2);
k:=Copy(Unicode,i,2);
i:=i+4;
s:=s+Char(ReadHex(j))+Char(ReadHex(k));
end;
if s<>'' then
s:=WideCharToString(PWideChar(s+#0#0#0#0))
else
s:='';
Result:=s;
end;
如何在vb中将汉字转化成unicode
A.发送中文例子:
发送中文有两种方法,一种是PDU,一种是UCS2文本
1.PDU方法:
at+cmgf=0
at+cmgs=24
>0891 683108100005F0 11 00 0B81 3109018759F1 0008 A7 0A 00650073007496484E30
信息内容为set陈丰
解释:此字符串传set陈丰五个字符,采用unicode编码。
0891固定格式不动,683108100005F0为短消息中心号码,
11固定格式不动代表PDU格式,
00代表是第几条短消息,
0B81固定格式不动,3109018759F1为目的号码,
00固定格式不动代表是短消息,
08代表8位unicode编码(中文必须用unicode编码),F0到F3为7编码,F4到F7为8位编码
A7代表此短消息在短消息中心存储的时间是24小时,最大FF为135周,
0A代表后有10个字节(有1个字节为01,2个为01,类推)
0065是s的unicode编码,0073是e的unicode编码,0074是t的unicode编码,
9648是陈的unicode编码,4E30是丰的unicode编码
0A后跟的就是所需发送的消息部分,全部采用unicode的编码。
unicode的编码转换可调用VB或VC中的函数直接得到。
at+cmgs=24中的24是14再加上消息长度10得出的.
2.USC2的文本方法
at+cmgf=1
at+csmp=??,??,??,8(问号代表自己根据需要选择合适的参数)
at+cmgs=手机号码(1390PQRABCD)
>00650073007496484E30
信息内容为set陈丰
当您用UCS2文本发送中文短消息时,要先将中文转成unicode编码,
再将中文短消息的unicode编码用文本方式发送.
B.编程例子:
Private Sub Command1_Click()
' 使用 COM3。
' 9600 波特,无奇偶校验,8 位数据,一个停止位。
MSComm1.Settings = "9600,N,8,1"
MSComm1.Handshaking = comRTS
' 打开端口。
' MSComm1.PortOpen = False
' MSComm1.PortOpen = True
' 将 at 命令送到调制解调器。
MSComm1.Output = "AT"
MSComm1.Output = Chr(13)
MSComm1.Output = "AT+CMGF=1"
MSComm1.Output = Chr(13)
MSComm1.Output = "AT+CMGS="
MSComm1.Output = Chr(34)
MSComm1.Output = "13901237885"
MSComm1.Output = Chr(34)
MSComm1.Output = Chr(13)
MSComm1.Output = "test OK "
MSComm1.Output = Chr(26)
End Sub
Private Sub Command3_Click()
MSComm1.CommPort = 2
MSComm1.PortOpen = True
End Sub
//将UNICODE转换中文
Public Function Unicode2AscII(ByVal s As String)
On Error Resume Next
Dim i As Integer
Dim r As String
For i = 1 To Len(s) Step 4
r = r + ChrB("&H" & Mid(s, i + 2, 2)) & ChrB("&H" & Mid(s, i, 2))
Next
Unicode2AscII = r
End Function
//将中文转换为UniCode,
function AnsiToUnicode(Ansi: string):string;
var
s:string;
i:integer;
j,k:string[2];
a:array [1..1000] of char;
begin
s:='';
StringToWideChar(Ansi,@(a[1]),500);
i:=1;
while ((a[i]<>#0) or (a[i+1]<>#0)) do begin
j:=IntToHex(Integer(a[i]),2);
k:=IntToHex(Integer(a[i+1]),2);
s:=s+k+j;
i:=i+2;
end;
Result:=s;
end;
文章录入:admin 责任编辑:admin
上一篇文章: 如何在串口通讯程序中处理数据包
下一篇文章: 基于串口通信的远程自动抄表系统实现
【发表评论】【告诉好友】【打印此文】【关闭窗口】
· 常用DTMF/FSK解码器集成电…
· PT2262编码芯片的软件解码
· [组图]PT2262/2272编解码集…
· [组图]87LPC764实现遥控信…
· [组图]单片机与ISA总线以太…
· [组图]DTMF远程通信的软硬…
· [组图]一种2FSK解调算法的…
· 电话通讯设计经验
· [组图]基于单片机控制的小…
· [组图]几种电话线馈电电路…
· [组图]移频键控(FSK)基础
· [组图]各种IC封装形式
· [组图]10分钟完成一个USB驱…
· PCB设计基础知识
· [组图]PCB设计指引
· uCOS51移植心得
· [组图]嵌入式GSM短信息接口…
· [组图]表面贴装设计与焊盘…
· [组图]C#开发终端式短信的…
· [组图]C#开发终端式短信的…
QuickComm(一个版主写的串口…
Use Base Class Lib for Ser…
Serial COM Simply in C#
如何使用串口控件MSComm在do…
Delphi串口通讯的监听
RS-232-C端口实时监控软件的…
多线程技术在VC++串口通信程…
MSComm控件实现中文Win 9x下…
基于串口通信的远程自动抄表…
如何在串口通讯程序中处理数…
(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
没有任何评论
| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |
版权所有 Copyright? 2002-2005 华程电子 核心:PowerEasy V4.03
设计版本:艺龙在线 V4.3 大众版
公司名称:山西晋华程电子设计中心
网络供应商:时代互联
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -