usc2转ansi php,C++高手帮忙修改实现usc2转ansi

[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日

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值