现在的位置: 首页 > 综合 > 正文

utf-8和ANSI

2014年02月03日 ⁄ 综合 ⁄ 共 1705字 ⁄ 字号 评论关闭

1.utf8保存文件绝对是没有问题,可以有bom和无bom格式,并且支持多个多国家语言。

2.ansi保存中文会出现乱码情况。

#if USE_UTF8
	FILE* f = _wfopen(_T("t.log"), _T("w+, ccs=UTF-8"));
	if (f) {
		wchar_t wbuffer[30];
		wmemset(wbuffer, 0, _countof(wbuffer));
		wcscpy(wbuffer, _T("中国"));
		fwrite(wbuffer, sizeof(wchar_t)*wcslen(wbuffer), 1, f);
		wcscpy(wbuffer, _T("\r\n"));
		fwrite(wbuffer, sizeof(wchar_t)*wcslen(wbuffer), 1, f);
		wcscpy(wbuffer, _T("你好"));
		fwrite(wbuffer, sizeof(wchar_t)*wcslen(wbuffer), 1, f);
		fclose(f);
	}
#else
	FILE* f = fopen("t.log", "w+, ccs=ANSI");
	if (f) {
		char cbuffer[30];
		memset(cbuffer, 0, sizeof(cbuffer));
		strcpy(cbuffer, "中国");
		fwrite(cbuffer, sizeof(char)*strlen(cbuffer), 1, f);
		strcpy(cbuffer, "\r\n");
		fwrite(cbuffer, sizeof(char)*strlen(cbuffer), 1, f);
		strcpy(cbuffer, "你好");
		fwrite(cbuffer, sizeof(char)*strlen(cbuffer), 1, f);
		fclose(f);
	}
#endif

class StringHelper{
	public :
	
	static std::wstring Char2Wchar(std::string stdChar);
	
	static std::string Wchar2Char(std::wstring stdWchar);
	
	static std::string CString2String(ATL::CString str);
};

std::string StringHelper::Wchar2Char(std::wstring stdWchar)
{
	std::string RetString;
	int mb_size = ::WideCharToMultiByte(CP_ACP, 0, stdWchar.c_str(), -1, NULL, 0, NULL, NULL);
	if(mb_size) {
		char* temp = new char[mb_size];
		mb_size = ::WideCharToMultiByte(CP_ACP, 0, stdWchar.c_str(), -1, temp, mb_size, NULL, NULL);
		RetString = temp;
		delete temp;
		temp = NULL;
	}
	return RetString;
}



std::wstring StringHelper::Char2Wchar(std::string stdChar)
{
	std::wstring RetString;
	int wd_size = ::MultiByteToWideChar(CP_UTF8, 0, stdChar.c_str(), -1, NULL, 0);
	if (wd_size) {
		wchar_t* temp = new wchar_t[wd_size];
		::MultiByteToWideChar(CP_UTF8, 0, stdChar.c_str(), -1, temp, wd_size);
		RetString = temp;
		delete temp;
		temp = NULL;
	}
	return RetString;
}

std::string StringHelper::CString2String(ATL::CString str)
{
	std::string RetString;
	RetString = Wchar2Char((LPCTSTR)str);
	return RetString;
}

抱歉!评论已关闭.