VS 아래 중국어 표시 문제 - 인코딩 변환
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 시스템과 호환됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
utf-8에 서명 코드를 가지고 있는지 여부입니다.매개변수는 서명 여부를 나타냅니다. 그러나 이 서명이 WriteAllBytes에서 무효인지 여부는 영원히 서명이 없습니다. 그러나 WriteAllText에서는 유효합니다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.