MultiByteToWideChar(CP_UTF8,0,"ABCD",-1,outPutUtf16,512); 出错,outPutUtf16中内容为空
MultiByteToWideChar(CP_ACP,0,"ABCD",-1,outPutUtf16,512); 正确,outPutUtf16中内容为"ABCD"
为何 ? 我想是不是WinCe上不能识别CP_UTF8?
可是也有点牵强 ,因为我在一台手持设备上试 MultiByteToWideChar(CP_UTF8,0,"ABCD",-1,outPutUtf16,512)是正确的
但在另一台机上试就为空值,真是头晕啊 望高手指点一二
注 我已将代码量减到最少,可以排除其他地方的错误,问题就锁定在MultiByteToWideChar上
看下返回值对不对,然后用GetLastError看下返回是不是0, 如果不是找相应的ERROR CODE,
返回值是0, 相应的ERROR CODE是87,也就是ERROR_INVALID_PARAMETER 参数错
所以估计是CP_UTF8这个参数错了
但是必须要从UTF8转成UTF16啊 怎么办呢
关于这个函数的使用,需要注意一些问题,LZ可以去我eeworld的Blog看看
你说的和我的问题不是一个哦 ANSI下的字串我是成功转了的 只是UTF8的转失败了
你在一台手持设备上测试是ok的。那你开始测试的环境呢?什么系统?
系统没有添加CP_UTF8的codepage?
手头没有pb,无法确认
我看了一下帮助,是不是你的wince低于5.0啊?
Microsoft Windows CE .NET
MultiByteToWideChar
Parameters
CodePage
[in] Specifies the code page to be used to perform the conversion. This parameter can be given the value of any code page that is installed or available in the system. You can also specify one of the following values: Value Description
CP_ACP ANSI code page
CP_MACCP Not supported
CP_OEMCP OEM code page
CP_SYMBOL Not supported
CP_THREAD_ACP Not supported
这个参数只有这么多!
Platform Builder for Microsoft Windows CE 5.0
MultiByteToWideChar
Parameters
CodePage
[in] The code page to be used to perform the conversion. This parameter can be given the value of any code page that is installed or available in the system.
You can also specify one of the values shown in the following table.
Value Description
CP_ACP ANSI code page
CP_MACCP Not supported
CP_OEMCP OEM code page
CP_SYMBOL Not supported
CP_THREAD_ACP Not supported
CP_UTF7 UTF-7 code page
CP_UTF8 UTF-8 code page
可能是你在定制os的时候没有把CP_UTF8也定义进去