/* cd into the kwq directory, and use this command: make && g++ can-convert.mm -framework Carbon && ./a.out && rm a.out */ #include <Carbon/Carbon.h> const int NoEncodingFlags = 0; const int BigEndian = 0; const int IsJapanese = 0; const int LittleEndian = 0; const int VisualOrdering = 0; typedef struct { const char *charset; TextEncoding encoding; int flags; } CharsetEntry; #define kCFStringEncodingBig5_DOSVariant (kTextEncodingBig5 | (kBig5_DOSVariant << 16)) #define kCFStringEncodingEUC_CN_DOSVariant (kTextEncodingEUC_CN | (kEUC_CN_DOSVariant << 16)) #define kCFStringEncodingEUC_KR_DOSVariant (kTextEncodingEUC_KR | (kEUC_KR_DOSVariant << 16)) #define kCFStringEncodingISOLatin10 kTextEncodingISOLatin10 #define kCFStringEncodingKOI8_U kTextEncodingKOI8_U #define kCFStringEncodingShiftJIS_DOSVariant (kTextEncodingShiftJIS | (kShiftJIS_DOSVariant << 16)) #include "KWQCharsetData.c" int main() { int i; for (i = 0; table[i].charset; ++i) { TECObjectRef c; if (table[i].encoding != kCFStringEncodingUnicode && TECCreateConverter(&c, table[i].encoding, CreateTextEncoding(kTextEncodingUnicodeDefault, kTextEncodingDefaultVariant, kUnicode16BitFormat)) != noErr) { printf("can't do %s\n", table[i].charset); } } }