原创 .Net UCS2 加码最简单的方法(适用于中文短信)收藏

 

大家好!我是Venox10111, 是新来这儿的老网虫了,hoho,如果觉得这个网名别扭也可以叫南非黑帅啊,嘿嘿,谁叫人家从南非来又和古天乐一样黑,一样帅拉(看见你冒汗了)

 

Anyway,第一次发帖,太简单的话题不好,难度太大的也不好,我们今天就来一个比较实用又简单的吧。

 

最近开发了一个短信 Gateway 应用方案,虽然是不用 PDU 那么麻烦,但毕竟要发中文短信的话得用加码的罗(BTW,最后都不需要用这个功能)

编程文档详细的指名要用 UCS2 加码,Ok, UTF8 和 16 大家都不陌生吧,但什么是 UCS2 呢?在这里粗略的解释一下,摘的

UCS有两种格式:UCS-2UCS-4。顾名思义,UCS-2就是用两个字节编码,UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码。下面让我们做一些简单的数学游戏:

UCS-22^16=65536个码位,UCS-42^31=2147483648个码位。

UCS-4根据最高位为0的最高字节分成2^7=128group。每个group再根据次高字节分为256plane。每个plane根据第3个字节分为256 (rows),每行包含256cells。当然同一行的cells只是最后一个字节不同,其余都相同。

group 0plane 0被称作Basic Multilingual Plane, BMP。或者说UCS-4中,高两个字节为0的码位被称作BMP

UCS-4BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节,就得到了UCS-4BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。

经过了无数次的尝试,我用以下代码完成了这个加码的 function, 测试通过,童叟无欺哦

 

 Private Function StrtoUCS2(ByVal Content As StringAs String
        
Dim i, count As Integer
        
Dim Result, t As String
        
For i = 1 To Content.Length

            t 
= Format(AscW(Mid(Content, i)), "X"
)
            
For count = 1 To 4 -
 t.Length
                t 
= "0" &
 t
            
Next

            Result 
+= t
        
Next

        
Return Result
    
End Function

发表于 @ 2007年11月14日 19:24:00|评论(loading...)

新一篇: Delphi 和 .Net 程序像 Live Messenger 一样闪烁提醒 | 

用户操作
[即时聊天] [发私信] [加为好友]
南非黑帅
订阅我的博客
XML聚合  FeedSky
南非黑帅的公告
为依消得人憔悴

 姓名:L. Hong
 性别:你说呢
 年龄:24
 国家:南非,新西兰
 所在:新西兰一家小公司
 职业:每天玩编程
 学历:南非开普敦大学,商学士
文章分类
    收藏
      存档
      软件项目交易
      Csdn Blog version 3.1a
      Copyright © 南非黑帅