VS 아래 중국어 표시 문제 - 인코딩 변환

이것은 일련의 문장으로 상세한 내용은 클릭할 수 있다2년 동안 겪은 프로젝트에 대한 시리즈 총결산
VS2010에서 코코스2dx 프로젝트를 개발했는데 가장 먼저 부딪힌 첫 번째 문제는 중국어 디스플레이 문제입니다. 이 선배들은 이미 좋은 답을 주었습니다. 여기에 자신의 프로젝트 코드를 붙여 주세요.
1. 주요 변환 코드

int GBK2UTF8(std::string & gbkStr, const char* toCode, const char* fromCode)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
	iconv_t iconvH;
	iconvH = iconv_open(fromCode, toCode);
	if (iconvH == 0)
	{
		return -1;
	}
	const char* strChar = gbkStr.c_str();
	const char** pin = &strChar;
	size_t strLength = gbkStr.length();
	if (strLength <= 0)
	{
		return -1;
	}
	char* outbuf = (char*) malloc(strLength*4);
	char* pBuff = outbuf;

	memset( outbuf, 0, strLength*4);
	size_t outLength = strLength*4;
	if (-1 == ::iconv(iconvH, pin, &strLength, &outbuf, &outLength))
	{
		iconv_close(iconvH);
		free(pBuff);
		return -1;
	}
	gbkStr = pBuff;
	free(pBuff);
	iconv_close(iconvH);
#else

#endif
	return 0;
}

2、GBK-UTF-8

std::string GBK2UTF8(const char* szMsg)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
	std::string sztemp = "";
	sztemp.append(szMsg);
	GBK2UTF8(sztemp, "gb2312", "utf-8");
	return sztemp;
#else
	return szMsg;
#endif
}

3, UTF-8 등급 GBK

std::string UTF8GBK2(const char* szMsg)
{
	if (szMsg == NULL || *szMsg == 0) return szMsg;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
	std::string sztemp = "";
	sztemp.append(szMsg);
	GBK2UTF8(sztemp, "utf-8", "gb2312");
	return sztemp;
#else
	return szMsg;
#endif
}

Mac OS X 시스템에서는 이러한 변환이 필요하지 않으므로 여기에 WIN32의 판정.이 방법은 Windows 및 Mac OS X 시스템과 호환됩니다.

좋은 웹페이지 즐겨찾기