Chinaunix首页 | 论坛 | 博客
  • 博客访问: 33971
  • 博文数量: 17
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-02 12:04
文章分类
文章存档

2011年(1)

2010年(6)

2008年(10)

我的朋友
最近访客

分类: WINDOWS

2010-02-28 14:20:01

 最近我们有客户在英创的EM9160嵌入式主板上进行短信程序开发时,反映了中文短信发送的问题。实际上这其中的关键是在于获取中文字符的Unicode的编码,然后按照PDU的格式进行发送。

EM9160嵌入式主板是一款高性价比的ARM9工控主板,提供了丰富的通讯接口。由于该款主板没有支持彩色TFT液晶屏,因此在WinCE内核中没有对于中文的缺省支持,这样使得 eVC中提供的转换函数MultiByteToWideChar(…)对于中文字符无效。在EM9160如何来解决这个问题呢?

一种是可以利用Unicode转换算法,这种方法是需要通过程序来实现的,利用查表的方法来获取ASCII码、以及中文GB2312的Unicode编码,我们已做好了这部分的程序。

实际上在eVC下还可以采用更为简单的方法,就是直接通过eVC编译器来获取。在WinCE只支持Unicode编码的字符和字符串,在Unicode编码中,所有字符的存储都占有两个字节,在编程时,通过使用字符前缀“L”或者_T(“ ”)来创建一个Unicode字符或字符串。如:

TCHAR SrcString[100];
_tcscpy( SrcString, _T("中文转换测试123") );
然后再按照以下方法将其转换为char类型的数据。
int i1, i2, len;
char Dest[100];
len = wcslen(SrcString);
for( i1=0,i2=0; i1{

Dest[i2] = (char)(( SrcString [i1]>>8)&0x00ff);

i2++;

Dest[i2] = (char)( SrcString [i1]&0x00ff);

i2++;

}
需要注意的是高位字节在前,低位在后。
 
阅读(806) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~