C语言下Unicode字符串与多字节字符串转换方法

原创 2013年12月05日 16:52:40

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;

CString和string在unicode与非unicode下的相互转换

CString和string在unicode与非unicode下的相互转换 最近想写一个手机控制电脑的玩具,涉及到了socket通信,数据采用json通用格式,首先是jsoncpp的编译问题太烦了,...
  • u014303844
  • u014303844
  • 2016年05月13日 18:34
  • 5230

用C语言实现中文到unicode码的转换

由于本人喜欢用Notepad++编辑器,该编辑器的好处是小巧灵活,但是有几个地方做的不足,但是我都能够很好的采取相应的措施,下面让我们看看Notepad++有哪些地方的不做,进而采取怎样的措施。 ...
  • qq_21792169
  • qq_21792169
  • 2015年12月22日 13:33
  • 22529

c++ 多字节 转换为 unicode

Unicode的出现是为了适应软件国际化的需要。Unicode不同于双字节字符集(DBCS)。 一、相关操作函数        1、DBCS使用下面的函数操作字符串:           ...
  • qq_22642239
  • qq_22642239
  • 2017年06月29日 18:14
  • 741

c/c++ 中文字符串转Unicode和UTF8

1. 描述  在windows上做系统编程,少不了会遇到处理中文字符串的问题。而大多时候中文汉字都是以多字节编码的方式展现的。为了实现更好的兼容性或一些特殊的需求,(比如在网页上显示。)常需要将其转换...
  • Jeanphorn
  • Jeanphorn
  • 2015年05月20日 19:21
  • 9894

Unicode与UTF-8互转(C语言实现)

1.1 ASCII码 我们知道, 在计算机内部, 所有的信息最终都表示为一个二进制的字符串. 每一个二进制 位(bit)有0和1两种状态, 因此八个二进制位就可以组合出 256种状态, 这被称...
  • chary8088
  • chary8088
  • 2014年03月14日 10:17
  • 12349

用C语言实现中文到unicode码的转换

转自:  http://blog.csdn.net/qq_21792169/article/details/50379275 源文件用不同的编码方式编写,会导致执行结果不一样 由于本人喜欢用N...
  • qq_26093511
  • qq_26093511
  • 2017年02月13日 11:10
  • 425

Unicode的C/C++编程

Unicode的C/C++编程 Unicode的最大好处是这里只有一个字符集,通俗一点讲就是说使用Unicode字符编码的程序可以在任何国语言的编译环境下编译通过,而不会被认为是乱码,也可以使任何语言...
  • tuwen
  • tuwen
  • 2007年11月19日 15:48
  • 3053

UTF-8, Unicode, GB2312格式串转换之C语言版

int Utf8ToUnicode(void* pOutUnicode, int outBuffLen, char* pInUtf8, int utf8Bytes) {  int curPos = 0...
  • niepangu
  • niepangu
  • 2016年01月27日 20:13
  • 2042

不依赖任何系统API,用c语言实现gbk/utf8/unicode编码转换

汉字'我' Unicode编码是 0x6211       01100010 00010001 UTF8编码是    0xe68891    11100110 10001000 100010001 ...
  • bladeandmaster88
  • bladeandmaster88
  • 2017年02月02日 19:10
  • 1567

多字节字符串与UNICODE字符串的互相转换

多字节字符串转换为UNICODE字符串
  • u014053368
  • u014053368
  • 2014年04月08日 11:40
  • 756
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言下Unicode字符串与多字节字符串转换方法
举报原因:
原因补充:

(最多只允许输入30个字)