SQLite3에 대한 ANSI에서 UTF8로의 상호 변환 함수 제공
사용 방법:
char* src = "...";//변환할 ANSI 또는 UTF8 문자열char* dst = NULL;//함수 내부에서 분배된 메모리 포인터를 저장합니다. 메모리 버퍼에 전송할 필요가 없습니다.
UTF-8:to 로 변환utf8(src, &dst);ANSI:to 로 변환gb(src, &dst);
반환값: 0-실패, 0이 아닌 0-성공.참고: 작업이 성공하면 함수 내부에 할당된 공간을 수동으로 풀어야 합니다.
if(dst)
{
free(dst);
dst = NULL;
}
코드:
#include
#include int to_utf8(char* psrc, char** ppdst)
{
int ret,ret2;
wchar_t* pws = NULL;
char* putf = NULL;
ret = MultiByteToWideChar(CP_ACP, 0, psrc, -1, NULL, 0);
if(ret<=0){
*ppdst = NULL;
return 0;
}
pws = (wchar_t*)malloc(ret*2);
if(!pws){
*ppdst = NULL;
return 0;
}
MultiByteToWideChar(CP_ACP, 0, psrc, -1, pws, ret);
ret2 = WideCharToMultiByte(CP_UTF8, 0, pws, -1, NULL, 0, NULL, NULL);
if(ret2<=0){
free(pws);
return 0;
}
putf = (char*)malloc(ret2);
if(!putf){
free(pws);
return 0;
}
if(WideCharToMultiByte(CP_UTF8, 0, pws, ret, putf, ret2, NULL, NULL)){
*ppdst = putf;
free(pws);
return 1;
}else{
free(pws);
free(putf);
*ppdst = NULL;
return 0;
}
}
int to_gb(char* psrc, char** ppdst)
{
int ret, ret2;
wchar_t* pws = NULL;
char* pgb = NULL;
ret = MultiByteToWideChar(CP_UTF8, 0, psrc, -1, NULL, 0);
if(ret<=0){
*ppdst = NULL;
return 0;
}
pws = (wchar_t*)malloc(ret*2);
if(!pws){
*ppdst = NULL;
return 0;
}
MultiByteToWideChar(CP_UTF8, 0, psrc, -1, pws, ret);
ret2 = WideCharToMultiByte(CP_ACP, 0, pws, -1, NULL, 0, NULL, NULL);
if(ret2<=0){
free(pws);
return 0;
}
pgb = (char*)malloc(ret2);
if(!pgb){
free(pws);
*ppdst = NULL;
return 0;
}
if(WideCharToMultiByte(CP_ACP, 0, pws, -1, pgb, ret2, NULL, NULL)){
*ppdst = pgb;
free(pws);
return 1;
}else{*ppdst = 0;
free(pgb);
free(pws);
return 0;
}
}
by:여자는 울지 않는다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.