`
iuottp
  • 浏览: 170676 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

短信中的的 UCS2的编码与解码方法(java)

    博客分类:
  • SGIP
阅读更多

from: http://www.blogjava.net/cmzy/archive/2009/01/06/250102.html

 

最近,做一个关于SMS的程序,需要对中文部分进行UCS编码,这里用了两个函数,可以将短信中的UCS2字符串在UCS2和GBK之间装换。记录以下代 码:

代码    查看源代码 打印
  1. /**  
  2.  * UCS2解码  
  3.  *   
  4.  * @param src  
  5.  *            UCS2 源串  
  6.  * @return 解码后的UTF-16BE字符串  
  7.  */   
  8. public   static  String DecodeUCS2(String src) {  
  9.     byte [] bytes =  new   byte [src.length() /  2 ];  
  10.   
  11.     for  ( int  i =  0 ; i < src.length(); i +=  2 ) {  
  12.         bytes[i / 2 ] = ( byte ) (Integer  
  13.                 .parseInt(src.substring(i, i + 2 ),  16 ));  
  14.     }  
  15.     String reValue;  
  16.     try  {  
  17.         reValue = new  String(bytes,  "UTF-16BE" );  
  18.     } catch  (UnsupportedEncodingException e) {  
  19.         throw   new  PduDecodeException(e);  
  20.     }  
  21.     return  reValue;  
  22.   
  23. }  
  24.   
  25. /**  
  26.  * UCS2编码  
  27.  *   
  28.  * @param src  
  29.  *            UTF-16BE编码的源串  
  30.  * @return 编码后的UCS2串  
  31.  */   
  32. public   static  String EncodeUCS2(String src) {  
  33.       
  34.     byte [] bytes;  
  35.     try  {  
  36.         bytes = src.getBytes("UTF-16BE" );  
  37.     } catch  (UnsupportedEncodingException e) {  
  38.         throw   new  PduEncodeException(e);  
  39.     }  
  40.   
  41.     StringBuffer reValue = new  StringBuffer();  
  42.     StringBuffer tem = new  StringBuffer();  
  43.     for  ( int  i =  0 ; i < bytes.length; i++) {  
  44.         tem.delete(0 , tem.length());  
  45.         tem.append(Integer.toHexString(bytes[i] & 0xFF ));  
  46.         if (tem.length()== 1 ){  
  47.             tem.insert(0 , ' 0 ');  
  48.         }  
  49.         reValue.append(tem);  
  50.     }  
  51.     return  reValue.toString().toUpperCase();  
  52. }  



By:残梦追月

分享到:
评论

相关推荐

    短信pdu编码解码_短信_短信PDU编码_pdu_

    短信PDU编码与解码是通信领域中一个关键的概念,特别是在GSM(全球系统移动通信)网络中,用于传输文本消息。PDU全称为Protocol Data Unit(协议数据单元),是SMS(Short Message Service,短消息服务)在GSM网络...

    GSM-PDU模式短信编解码-java代码

    项目中用到了AT指令中的GSM短信息的收发,上网找的代码大多都是C或者C++语言编写的,因为我使用的是java语言,于是决定自己编写一套java语言的GSM-PDU模式短信息编码与解码的代码: 1、短信传输分三种模式:Block...

    基于短信猫,采用PDU编码的短信收发java实现

    编码过程中,需要考虑7位编码集(7-bit ASCII)、16位编码集(UCS-2)的选择,以及如何处理长短信等复杂情况。 `PduUnpack.java`则负责解码接收到的PDU数据。这个过程涉及从二进制数据中提取出短信内容、发送者和...

    UCS2_80_81_82编码实现

    在编程中,我们可能会遇到需要在不同UCS2编码之间转换的情况。例如,UCS2的80、81、82格式可能指的是特定的编码约定或字节顺序标记(Byte Order Mark, BOM)。BOM用于标识数据流的字节顺序,尤其在UTF-16编码中常见...

    PDU 短信编解码工具(升级版)

    短信在传输过程中,通常会经历两种编码形式:7位ASCII编码和16位UCS2编码。7位ASCII编码适用于英文和其他单字节字符集,而16位UCS2编码则用于支持Unicode字符集,包括中文、日文等多字节字符。PDU编码则将这些字符...

    PDU 短信 解码 编码

    在IT行业中,PDU(Protocol Data Unit)短信解码与编码是通信协议中的一个重要概念,尤其是在GSM(Global System for Mobile Communications)系统中用于短信服务(Short Message Service, SMS)。PDU模式是短信的一...

    GB13000 UCS-2格式转UTF-8

    身份证读卡器生成的基本信息TEXT文件,由于是采用 GB 13000 的 UCS-2 编码格式,java读取出来是乱码,这个段代码就是解决转码问题的,亲测可用

    基于C语言的短信pdu的编码解码所有资料

    通过学习和理解这些知识点,开发者可以编写出自己的C语言短信PDU处理程序,实现短信的发送和接收,尤其是对于处理长短信的场景,理解PDU的工作原理和编码解码规则至关重要。在实际应用中,这有助于提高短信服务的...

    UCS2 GB 转换

    在Java中,可以使用`java.nio.charset.Charset`类的`newDecoder`和`newEncoder`方法来创建解码器和编码器。 在处理UCS2和GB2312转换时,需要注意的一些问题包括: 1. 不完整的字符集:UCS2可以表示更多的字符,而...

    pdu编码收发短信例子

    本教程将深入探讨PDU编码在收发短信过程中的应用,以及7位、8位和UCS2编码的区别。 PDU编码是短信中心(SMSC)与手机之间交换短信数据的标准格式。它是一种二进制编码,包含了短信的所有必要信息,如目的地址、源...

    输出中文Font 'STSongStd-Light' with 'UniGB-UCS2-H' is not recognized

    1. **检查字体资源**:确保你的项目或系统环境中已经包含了`STSongStd-Light`字体,并且该字体支持UniGB-UCS2-H编码。如果缺少这个字体,可以尝试将它添加到系统路径,或者在iText中明确指定字体资源。 2. **正确...

    PDU.zip_PDU编码_java 短信猫 pdu_pdu

    在Java应用中,通常会有一个API或库,比如AT命令集,用于与短信猫交互,进行PDU编码和解码的操作。 文档"手机短信的PDU编码和解码.doc"很可能详细阐述了如何在实际开发中使用PDU编码和解码,包括可能遇到的问题、...

    java字符集编码问题

    通过对ISO 8859-1、GB2312/GBK、Unicode和UTF等常见编码的理解,以及Java提供的字符串操作方法(如`getBytes`和`new String`),开发者可以有效地解决实际项目中的字符编码问题,确保应用程序能够正确地处理各种文本...

    Java pdu短信解码全面解析

    在本文中,我们将深入探讨如何使用Java实现这一过程,特别是基于Python解码方法的转化。 首先,我们需要理解PDU短信的基本结构。PDU格式的短信通常由一系列字节组成,这些字节包含了发送者信息、接收者信息、短信...

    SIM的7BIT解码编码

    在“SIM的7BIT解码编码”这个主题中,我们主要探讨的是SIM卡中数据存储的一种编码方式——7位编码(7BIT编码),这种编码方式在短信(Short Message Service, SMS)传输中被广泛使用。 7位编码的原理基于字符集,最...

    Java实现的点对点短消息发送协议(smpp)开发包源码.rar

    4. **消息编码与解码**:SMPP协议使用特定的数据编码格式,如7位GSM字符集、8位UCS2编码或16位Unicode。源码中可能有`Encoder`和`Decoder`类,负责将文本消息转换为适合网络传输的格式,并将接收到的二进制数据还原...

    java中的编码知识

    在Java中,最常使用的字符集是Unicode,它的全称是UCS-2或UTF-16,包含了世界上几乎所有的字符。Unicode使得Java程序可以处理多语言文本,无需考虑特定地区的编码问题。 接着,我们要了解字节流与字符流。Java中的I...

    短信pdu 生成(源码)

    5. **API接口**:在实际开发中,开发者可能会使用如AT命令或者特定库(如Java的smslib)来与短信模块交互,这些库或接口提供了方便的方法来处理PDU的生成和解析。 6. **错误处理**:在处理PDU时,需要考虑各种可能...

    基于smpp协议的Java点对点短信发送源码包.rar

    4. **短信处理逻辑**:这部分代码处理短信的发送和接收,可能包括错误处理、短信编码转换(7位、8位、UCS2)等。 5. **测试用例**:为了验证代码功能的正确性,源码包可能包含一些测试类,用于模拟发送和接收短信。 ...

    cmpp.rar_CMPP2_cmpp_cmpp java_短信cmpp

    6. **编码与解码**:CMPP协议中,短信内容通常使用7位编码(GSM 7 bit Default Alphabet)或者16位编码(UCS2),开发者需要理解这两种编码方式并进行正确的转换。 7. **错误处理**:CMPP2协议定义了多种错误代码,...

Global site tag (gtag.js) - Google Analytics