static char CALLBACK __CFWin32EnumCodePageProc(LPTSTR string) {
    uint32_t encoding = CFStringConvertWindowsCodepageToEncoding(_tcstoul(string, NULL, 10));
    CFIndex idx;
    
    if (encoding != kCFStringEncodingInvalidId) { // We list only encodings we know
        if (__CFWin32EncodingList) {
            for (idx = 0;idx < (CFIndex)__CFWin32EncodingIndex;idx++) if (__CFWin32EncodingList[idx] == encoding) break;
            if (idx != __CFWin32EncodingIndex) return true;
            __CFWin32EncodingList[__CFWin32EncodingIndex] = encoding;
        }
        ++__CFWin32EncodingIndex;
    }
    return true;
}
Ejemplo n.º 2
0
static CFStringBuiltInEncodings GetEncoding(const tchar_t* From)
{
    if (!From)
		return kCFStringEncodingUTF8; // use UTF-8 internally
    else if (!From[0])
		return kCFStringEncodingASCII; // regular/default strings are ASCII
	else if (tcsicmp(From,T("ASCII"))==0)
		return kCFStringEncodingASCII;
	else if (tcsicmp(From,T("UTF-8"))==0)
		return kCFStringEncodingUTF8;
	else if (tcsicmp(From,T("UTF-16"))==0)
		return kCFStringEncodingUTF16;
	else if (tcsicmp(From,T("UTF-32"))==0)
		return kCFStringEncodingUTF32;
	else if (tcsnicmp(From,T("CP"),2)==0)
		return CFStringConvertWindowsCodepageToEncoding(atoi(From+2));

	return (CFStringBuiltInEncodings)kCFStringEncodingInvalidId;
}