C语言下Unicode字符串与多字节字符串转换方法
2013-12-05 16:52
423 查看
1.Unicode字符串转换为多字节字符串:
size_t wlen = 0;
wchar_t *wstr = (wchar_t*)pSrc;
//source unicode string
size_t byteLen =0;
//unicode string length in byte
size_t coverted = 0;
char retBuf[MODEL_CODEC_MAX_VALUE_LEN];
ST_RET ret = SD_FAILURE;
setlocale(LC_ALL,"chs");//setlocale(LC_ALL,"chs")会改变整个应用程序的字符集编码方式,调用完之后使用
//setlocale(LC_ALL,"C")还原。
wlen = wcslen(wstr);
byteLen = wlen * 2 + 1;
memset(retBuf,0,MODEL_CODEC_MAX_VALUE_LEN);
if(0 != wcstombs_s(&coverted,retBuf,MODEL_CODEC_MAX_VALUE_LEN,wstr,_TRUNCATE))
{
ret = SD_FAILURE;
}
else
{
ret = SD_SUCCESS;
}
setlocale(LC_ALL,"C");
assert(strlen(retBuf) < MODEL_CODEC_MAX_VALUE_LEN);
if(ret == SD_SUCCESS)
{
if(0 != strncpy_s(text,MODEL_CODEC_MAX_VALUE_LEN,retBuf,MODEL_CODEC_MAX_VALUE_LEN))
{
ret = SD_FAILURE;
}
}
return ret;
2.多字节字符串转换为Unicode字符串
setlocale(LC_ALL,"chs");
size_t len = strlen(text);
size_t converted = 0;
const int retLen = 512/sizeof(wchar_t);
wchar_t *retBuf = new wchar_t[retLen];
memset(retBuf,0,retLen);
bool ret = false;
if (0 != mbstowcs_s(&converted,retBuf,retLen,str,_TRUNCATE))
{
ret = false;
}
else
{
ret = true;
}
setlocale(LC_ALL,"C");
if (ret == true)
{
if (0 != wcsncpy_s(wstr,wcslen(retBuf)+1,retBuf,wcslen(retBuf)))
{
ret = false;
}
}
delete [] retBuf;
retBuf = 0;
return ret;
size_t wlen = 0;
wchar_t *wstr = (wchar_t*)pSrc;
//source unicode string
size_t byteLen =0;
//unicode string length in byte
size_t coverted = 0;
char retBuf[MODEL_CODEC_MAX_VALUE_LEN];
ST_RET ret = SD_FAILURE;
setlocale(LC_ALL,"chs");//setlocale(LC_ALL,"chs")会改变整个应用程序的字符集编码方式,调用完之后使用
//setlocale(LC_ALL,"C")还原。
wlen = wcslen(wstr);
byteLen = wlen * 2 + 1;
memset(retBuf,0,MODEL_CODEC_MAX_VALUE_LEN);
if(0 != wcstombs_s(&coverted,retBuf,MODEL_CODEC_MAX_VALUE_LEN,wstr,_TRUNCATE))
{
ret = SD_FAILURE;
}
else
{
ret = SD_SUCCESS;
}
setlocale(LC_ALL,"C");
assert(strlen(retBuf) < MODEL_CODEC_MAX_VALUE_LEN);
if(ret == SD_SUCCESS)
{
if(0 != strncpy_s(text,MODEL_CODEC_MAX_VALUE_LEN,retBuf,MODEL_CODEC_MAX_VALUE_LEN))
{
ret = SD_FAILURE;
}
}
return ret;
2.多字节字符串转换为Unicode字符串
setlocale(LC_ALL,"chs");
size_t len = strlen(text);
size_t converted = 0;
const int retLen = 512/sizeof(wchar_t);
wchar_t *retBuf = new wchar_t[retLen];
memset(retBuf,0,retLen);
bool ret = false;
if (0 != mbstowcs_s(&converted,retBuf,retLen,str,_TRUNCATE))
{
ret = false;
}
else
{
ret = true;
}
setlocale(LC_ALL,"C");
if (ret == true)
{
if (0 != wcsncpy_s(wstr,wcslen(retBuf)+1,retBuf,wcslen(retBuf)))
{
ret = false;
}
}
delete [] retBuf;
retBuf = 0;
return ret;
相关文章推荐
- Go语言转换所有字符串为大写或者小写的方法
- WinCe和Windows Mobile下的Unicode和ANSI字符串转换的方法
- UNICODE字符串与多字节字符串的转换
- lua语言中十六进制字符串转换为二进制字符串的方法
- VC下几种转换为UNICODE字符串的方法
- JavaScript中字符串与Unicode编码互相转换的实现方法
- python str方法转换为字符串 对于Unicode会调用系统默认编码
- _bstr_t可接受多字节、UNICODE字符串,方便用以字符集转换
- 多字节字符串与UNICODE字符串的互相转换
- Algorithm: 字符串转换为 unicode 字节数组
- VC下几种转换为UNICODE字符串的方法
- JAVA方法 字符串与unicode的相互转换
- char* 和 wchar* 转换 多字节字符串与UNICODE字符串转换
- Algorithm: 字符串转换为 unicode 字节数组
- JAVA方法 字符串与unicode的相互转换
- [编辑][Java]删除properties配置文件中键值对的方法、附带字符串和Unicode间的转换方法
- C语言中时间戳转换成时间字符串的方法
- C语言中将字符串转换为数字的方法
- JAVA方法 字符串与unicode的相互转换
- JavaScript中字符串与Unicode编码互相转换的实现方法