ucs2 编码问题
现在最近要编写代码实现对用at命令控制gsm模块,查阅了一些资料后找到一篇关于串口收发sms其中有个用的c实现UCS2编码代码 如下
Windows环境下,用C实现UCS2编码和解码的算法如下:
// UCS2编码
// pSrc: 源字符串指针
// pDst: 目标编码串指针
// nSrcLength: 源字符串长度
// 返回: 目标编码串长度
int gsmEncodeUcs2(const char* pSrc, unsigned char* pDst, int nSrcLength)
{
int nDstLength; // UNICODE宽字符数目
WCHAR wchar[128]; // UNICODE串缓冲区
// 字符串-->UNICODE串
nDstLength = ::MultiByteToWideChar(CP_ACP, 0, pSrc, nSrcLength, wchar, 128);
// 高低字节对调,输出
for(int i=0; i <nDstLength; i++)
{
// 先输出高位字节
*pDst++ = wchar[i] >> 8;
// 后输出低位字节
*pDst++ = wchar[i] & 0xff;
}
// 返回目标编码串长度
return nDstLength * 2;
}
在vc++6.0中编译出错显示
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(11) : error C2065: 'WCHAR' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(11) : error C2146: syntax error : missing ';' before identifier 'wchar'
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(11) : error C2065: 'wchar' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(11) : error C2109: subscript requires array or pointer type
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(14) : error C2059: syntax error : ':'
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(17) : error C2143: syntax error : missing ';' before 'type'
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(17) : error C2143: syntax error : missing ';' before 'type'
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(17) : error C2143: syntax error : missing ')' before 'type'
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(17) : error C2143: syntax error : missing ';' before 'type'
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(17) : error C2065: 'i' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(17) : warning C4552: ' <' : operator has no effect; expected operator with side-effect
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(17) : error C2059: syntax error : ')'
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(18) : error C2143: syntax error : missing ';' before '{'
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(20) : error C2109: subscript requires array or pointer type
C:\Program Files\Microsoft Visual Studio\MyProjects\鸿信项目\at\sms\ucs2 encode\ucs2 encode.c(22) : error C2109: subscript requires array or pointer type
Error executing cl.exe.
ucs2 encode.obj - 14 error(s), 1 warning(s)
我以为是在wchar这块出错,是不是应该加一个#include <wchar.h>的头文件,可是找不到。或则有可能是其它的问题我没有发现,谢谢大家和我一起分析下这是怎么回事!先谢谢各位了