我使用CURL从维基百科中检索JSON字符串,例如
https://en.wikipedia.org/w/api.php?action=opensearch&limit=1&format=json&search=syntax
我没有使用JSON解析器,我正在寻找一种删除unicode部分的方法,这对我来说毫无用处。
我已经在url中尝试了&utf8=
,以及WideCharToMultiByte和wcstombs。
我只想将此字符串转换为ANSI格式,以便在其他应用程序中使用,即使我将丢失数据。
以下是我用来转换字符串的代码:
void UnicodeToAnsi(char *str, char *str2)
{
unsigned char ch;
char *pr = str;
char *pw = str2;
while ( (*pr) != 0 )
{
ch = (*pr);
if ( ch == '\\' )
{
if ( *(pr+1) == 'u')
{
char szANSIString [2] = {'\0'};
wchar_t wcsString[2] = {0,'\0'};
char h[5]={'\0'};
int v;
strncpy(h,pr + 2,4);
v = (int)strtol(h, NULL, 16);
#if 0
wcsString[0] = v;
#ifndef _WIN32
WideCharToMultiByte ( CP_ACP, // ANSI code page
WC_COMPOSITECHECK, // Check for accented characters
wcsString, // Source Unicode string
-1, // -1 means string is zero-terminated
szANSIString, // Destination char string
sizeof(szANSIString), // Size of buffer
NULL, // No default character
NULL ); // Don't care about this flag
#else
wcstombs(szANSIString, wcsString, sizeof(szANSIString));
#endif
ch = *szANSIString;
if (ch == '\0') ch = '?';
#endif
//bored with this unicode, easy way
ch = '-';
if (v == 232) ch = 138;
if (v == 233) ch = 130;
if (v == 234) ch = 136;
if (v == 224) ch = 133;
if (v == 225) ch = 'a';
if (v == 226) ch = 'a';
if (v == 257) ch = 'a';
if (v == 231) ch = 135;
pr = pr + 5;
}
}
(*pw) = ch;
++pw;
++pr;
}
*pw = '\0';
return;
}