[C++] 纯文本查看 复制代码std::string usc2ToAnsi(std::string str)
{
str = replaceAll(str, "\\u", "0X");
std::string::size_type pos(0);
while (std::string::npos != (pos = str.find("0X", pos)))
{
std::string tmpString = str.substr(pos, 6);
WCHAR wcChinese[2];
wcChinese[0] = (WCHAR)strtol(tmpString.c_str(), NULL, 16);
wcChinese[1] = 0;
char Buffer[3];
ZeroMemory(Buffer, sizeof(Buffer));
WideCharToMultiByte(CP_ACP, 0, wcChinese, -1, Buffer, sizeof(Buffer), NULL, NULL);
// std::cout << Buffer << std::endl;
str.replace(pos, 6, Buffer);
pos += strlen(Buffer);
}
return str;
}
CString Usc2ToAnsi(CString Usc2Str)
{
CString codeStr, CacheStr;
Usc2Str.Replace(_T("\\u"), _T("0x"));
WCHAR wcChar[2];
char Buffer[3];
char pChar[7];
int Point = 0;
while (Point <= Usc2Str.GetLength() - 6)
{
CacheStr = Usc2Str.Mid(Point, 6);
WideCharToMultiByte(CP_ACP, 0, CacheStr, -1, pChar, sizeof(pChar), NULL, NULL);
long lCache = strtol(pChar, NULL, 16);
wcChar[0] = (WCHAR)lCache;
wcChar[1] = 0;
ZeroMemory(Buffer, sizeof(Buffer));
WideCharToMultiByte(CP_ACP, 0, wcChar, -1, Buffer, sizeof(Buffer), NULL, NULL);
codeStr += Buffer;
Point += 6;
}
return codeStr;
}
void CaDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
//修改好后,麻烦在这里测试一下这两个函数功能是否正常,如字符串:2019\u5e747\u67081\u65e5转化为ansi是2019年7月1日
}