UTF-8,Unicode,GB2312编码转换(C语言)
最近在做MQTT客户端的时候,遇到需要将输入的GB2312中文转换为UTF8的问题,这边做一个整理。
UTF-8转GB2312
代码:
/*!
* \brief UTF8至Gb2312 转换函数
*
* \details UTF8 -> Unicode -> Gb2312
*
* \param const char* gb 输入UTF8字符串
* int len 输入长度
* char *temp 输出Gb2312字符串
*
*/
void Utf8ToGb2312(const char* utf8, int len, char *temp)
{
int byteCount = 0;
int i = 0;
int j = 0;
while (i < len)
{
switch(GetUtf8ByteNumForWord((char)utf8[i]))
{
case 0:
temp[j] = utf8[i];
byteCount = 1;
break;
case 2:
temp[j] = utf8[i];
temp[j + 1] = utf8[i + 1];
byteCount = 2;
break;
case 3:
//这里就开始进行UTF8->Unicode
temp[j] = ((utf8[i] & 0x0F) << 4) | ((utf8[i + 1] >> 2) & 0x0F);
temp[j+1]