首先设置VSCODE自动猜编码。如果猜的不对,右下角选择GB2312。
keil的编辑器自从MDK5切换成scintilla的后,选项里有UTF8的选项,但是编译器支持的有问题。而且UTF8还有不带BOM的,keil编译器会识别为ANSI。
字库必须用GB的,不能用UTF的,UTF8-Unicode的转换的函数不复杂,但是真的没有必要。
百度搜一个函数:看着基本是对的。
/************************************************************************
* Function: Utf8ToUnicode
************************************************************************/
static void Utf8ToUnicode(char* unicode, char *utf8)
{
char *pchar = utf8;
int nBytes = 0;
if (0 == (*utf8 & 0x80))
{
/*
* single-byte char
*/
nBytes = 1;
unicode[0] = *utf8;
}
else
{
/*
* 3-byte char (chinese char)
*/
int i;
if ( (*utf8 & 0xf0) == 0xe0 )
{
nBytes = 3;
unicode[0] = ((utf8[0] & 0x0f) <<4) + ((utf8[1] & 0x3c) >>2);
unicode[1] = ((utf8[1] & 0x03) <<6) + (utf8[2] & 0x3f);
}
else
{
debug("ERROR: utf-8 to unicode, nBytes !=3\n");
nBytes = 0;
unicode[0] = '?';
return;
}
}
return;
}
|