from: http://www.blogjava.net/cmzy/archive/2009/01/06/250102.html
最近,做一个关于SMS的程序,需要对中文部分进行UCS编码,这里用了两个函数,可以将短信中的UCS2字符串在UCS2和GBK之间装换。记录以下代
码:
-
-
-
-
-
-
-
-
public
static
String DecodeUCS2(String src) {
-
byte
[] bytes =
new
byte
[src.length() /
2
];
-
-
for
(
int
i =
0
; i < src.length(); i +=
2
) {
-
bytes[i / 2
] = (
byte
) (Integer
-
.parseInt(src.substring(i, i + 2
),
16
));
-
}
-
String reValue;
-
try
{
-
reValue = new
String(bytes,
"UTF-16BE"
);
-
} catch
(UnsupportedEncodingException e) {
-
throw
new
PduDecodeException(e);
-
}
-
return
reValue;
-
-
}
-
-
-
-
-
-
-
-
-
public
static
String EncodeUCS2(String src) {
-
-
byte
[] bytes;
-
try
{
-
bytes = src.getBytes("UTF-16BE"
);
-
} catch
(UnsupportedEncodingException e) {
-
throw
new
PduEncodeException(e);
-
}
-
-
StringBuffer reValue = new
StringBuffer();
-
StringBuffer tem = new
StringBuffer();
-
for
(
int
i =
0
; i < bytes.length; i++) {
-
tem.delete(0
, tem.length());
-
tem.append(Integer.toHexString(bytes[i] & 0xFF
));
-
if
(tem.length()==
1
){
-
tem.insert(0
, '
0
');
-
}
-
reValue.append(tem);
-
}
-
return
reValue.toString().toUpperCase();
-
}
By:残梦追月
分享到:
相关推荐
短信PDU编码与解码是通信领域中一个关键的概念,特别是在GSM(全球系统移动通信)网络中,用于传输文本消息。PDU全称为Protocol Data Unit(协议数据单元),是SMS(Short Message Service,短消息服务)在GSM网络...
项目中用到了AT指令中的GSM短信息的收发,上网找的代码大多都是C或者C++语言编写的,因为我使用的是java语言,于是决定自己编写一套java语言的GSM-PDU模式短信息编码与解码的代码: 1、短信传输分三种模式:Block...
编码过程中,需要考虑7位编码集(7-bit ASCII)、16位编码集(UCS-2)的选择,以及如何处理长短信等复杂情况。 `PduUnpack.java`则负责解码接收到的PDU数据。这个过程涉及从二进制数据中提取出短信内容、发送者和...
在编程中,我们可能会遇到需要在不同UCS2编码之间转换的情况。例如,UCS2的80、81、82格式可能指的是特定的编码约定或字节顺序标记(Byte Order Mark, BOM)。BOM用于标识数据流的字节顺序,尤其在UTF-16编码中常见...
短信在传输过程中,通常会经历两种编码形式:7位ASCII编码和16位UCS2编码。7位ASCII编码适用于英文和其他单字节字符集,而16位UCS2编码则用于支持Unicode字符集,包括中文、日文等多字节字符。PDU编码则将这些字符...
在IT行业中,PDU(Protocol Data Unit)短信解码与编码是通信协议中的一个重要概念,尤其是在GSM(Global System for Mobile Communications)系统中用于短信服务(Short Message Service, SMS)。PDU模式是短信的一...
身份证读卡器生成的基本信息TEXT文件,由于是采用 GB 13000 的 UCS-2 编码格式,java读取出来是乱码,这个段代码就是解决转码问题的,亲测可用
通过学习和理解这些知识点,开发者可以编写出自己的C语言短信PDU处理程序,实现短信的发送和接收,尤其是对于处理长短信的场景,理解PDU的工作原理和编码解码规则至关重要。在实际应用中,这有助于提高短信服务的...
在Java中,可以使用`java.nio.charset.Charset`类的`newDecoder`和`newEncoder`方法来创建解码器和编码器。 在处理UCS2和GB2312转换时,需要注意的一些问题包括: 1. 不完整的字符集:UCS2可以表示更多的字符,而...
本教程将深入探讨PDU编码在收发短信过程中的应用,以及7位、8位和UCS2编码的区别。 PDU编码是短信中心(SMSC)与手机之间交换短信数据的标准格式。它是一种二进制编码,包含了短信的所有必要信息,如目的地址、源...
1. **检查字体资源**:确保你的项目或系统环境中已经包含了`STSongStd-Light`字体,并且该字体支持UniGB-UCS2-H编码。如果缺少这个字体,可以尝试将它添加到系统路径,或者在iText中明确指定字体资源。 2. **正确...
在Java应用中,通常会有一个API或库,比如AT命令集,用于与短信猫交互,进行PDU编码和解码的操作。 文档"手机短信的PDU编码和解码.doc"很可能详细阐述了如何在实际开发中使用PDU编码和解码,包括可能遇到的问题、...
通过对ISO 8859-1、GB2312/GBK、Unicode和UTF等常见编码的理解,以及Java提供的字符串操作方法(如`getBytes`和`new String`),开发者可以有效地解决实际项目中的字符编码问题,确保应用程序能够正确地处理各种文本...
在本文中,我们将深入探讨如何使用Java实现这一过程,特别是基于Python解码方法的转化。 首先,我们需要理解PDU短信的基本结构。PDU格式的短信通常由一系列字节组成,这些字节包含了发送者信息、接收者信息、短信...
在“SIM的7BIT解码编码”这个主题中,我们主要探讨的是SIM卡中数据存储的一种编码方式——7位编码(7BIT编码),这种编码方式在短信(Short Message Service, SMS)传输中被广泛使用。 7位编码的原理基于字符集,最...
4. **消息编码与解码**:SMPP协议使用特定的数据编码格式,如7位GSM字符集、8位UCS2编码或16位Unicode。源码中可能有`Encoder`和`Decoder`类,负责将文本消息转换为适合网络传输的格式,并将接收到的二进制数据还原...
在Java中,最常使用的字符集是Unicode,它的全称是UCS-2或UTF-16,包含了世界上几乎所有的字符。Unicode使得Java程序可以处理多语言文本,无需考虑特定地区的编码问题。 接着,我们要了解字节流与字符流。Java中的I...
5. **API接口**:在实际开发中,开发者可能会使用如AT命令或者特定库(如Java的smslib)来与短信模块交互,这些库或接口提供了方便的方法来处理PDU的生成和解析。 6. **错误处理**:在处理PDU时,需要考虑各种可能...
4. **短信处理逻辑**:这部分代码处理短信的发送和接收,可能包括错误处理、短信编码转换(7位、8位、UCS2)等。 5. **测试用例**:为了验证代码功能的正确性,源码包可能包含一些测试类,用于模拟发送和接收短信。 ...
6. **编码与解码**:CMPP协议中,短信内容通常使用7位编码(GSM 7 bit Default Alphabet)或者16位编码(UCS2),开发者需要理解这两种编码方式并进行正确的转换。 7. **错误处理**:CMPP2协议定义了多种错误代码,...