VC中含中英文的\u格式UNICODE字符串转UNICODE可见字符串

JAVA使用UTF-8格式字符串,JAVA与C++通信时将UTF-8串转为UNICODE串,如“ABCDabcd中国人民下沙123.杭州”转为UNICODE后外观如下:

\u41\u42\u43\u44\u61\u62\u63\u64\u4e2d\u56fd\u4eba\u6c11\u4e0b\u6c99\u31\u32\u33\u2e\u676d\u5dde

 VC中如下处理即可转回来

CString CXXClass::UnicodeToString()
{
	CString strUnicode = _T("\\u41\\u42\\u43\\u44\\u61\\u62\\u63\\u64\\u4e2d\\u56fd\\u4eba\\u6c11\\u4e0b\\u6c99\\u31\\u32\\u33\\u2e\\u676d\\u5dde");
	INT iStart = 0, iEnd = 0;
	CString strTmp, strOut;
	TCHAR c;
	BOOL bEnd = FALSE;
	for (INT i = 0; i < strUnicode.GetLength(); ++i)
	{
		iEnd = strUnicode.Find(_T('\\u'), iStart);
		if (iEnd < 0)
		{
			iEnd = strUnicode.GetLength();
			bEnd = TRUE;
		}
		strTmp = strUnicode.Mid(iStart + 1, iEnd - iStart - 1);
		if (!strTmp.IsEmpty())
		{
			//swscanf_s(strTmp.GetBuffer(), _T("%x"), &c);
			//strTmp.ReleaseBuffer();
              _stscanf_s(strTmp, _T("%x"), &c, 2); strOut += c; } iStart = iEnd + 1; if (bEnd) { break; } } return strOut; }

 应该还有更好的方法,欢迎交流。

posted @ 2016-04-23 11:49  emA  阅读(433)  评论(0编辑  收藏  举报