?? 如何在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 + -