Я использую CGPDFStringGetBytePtr
, чтобы получить const char *
с именем str
из CGPDFStringRef
, извлеченного из потока PDF. Я хочу преобразовать str
в UCS-2
представление (выражение типа ...\303...
), используя iconv
, но я не знаю, как кодировался str
. Как я решу это? Или какова была вероятная кодировка (учитывая, что я транслирую PDF на Mac)? Возможно, мне не хватает дерева для деревьев.
* РЕДАКТИРОВАТЬ # 1.
CFStringRef aStringRef = CGPDFStringCopyTextString(aCGStringRef);
NSString * aString = (NSString *) aStringRef;
const char * bytes = [aString cStringUsingEncoding:NSUTF8StringEncoding];
bytes = [SKTextEncoding convertText:bytes
toEncoding:"UCS-2"
fromEncoding:"UTF-8"];
NSLog(@"%s", bytes);
* РЕДАКТИРОВАТЬ # 2. Строка и байты перед любым преобразованием, то есть результат:
CGPDFStringRef aCGStringRef = NULL;
CGPDFObjectGetValue(anObjectRef,
kCGPDFObjectTypeString,
&aCGStringRef);
CFStringRef aStringRef =
CGPDFStringCopyTextString(aCGStringRef);
NSString * aString = (NSString *) aStringRef;
const char * bytes = [aString
cStringUsingEncoding:NSUTF8StringEncoding];
NSLog(@"string: %@____bytes: %s", aString, bytes);
2011-05-25 16: 08: 00.966 Тестовая строка [1813: 207]: Æ ____ байт: √Ü
2011-05-25 16: 08: 00.967 Тестовая строка [1813: 207]: Ï ____ байт: √è
2011-05-25 16: 08: 00.967 Тестовая строка [1813: 207]: ® _ _байт: ¬Æ
2011-05-25 16: 08: 00.968 Тестовая строка [1813: 207]: fl ____ байт: Ô¨Ç
2011-05-25 16: 08: 00.968 Тестовая строка [1813: 207]: ³ _ _байт: ¬≥
2011-05-25 16: 08: 00.969 Тестовая строка [1813: 207]: ã ____ байт: √ £
2011-05-25 16: 08: 00.969 Тестовая строка [1813: 207]: • ____ байт: √Ø
2011-05-25 16: 08: 00.970 Тестовая строка [1813: 207]: ³ _ _байт: ¬≥
2011-05-25 16: 08: 00.970 Тестовая строка [1813: 207]: µ ____ байт: ¬µ
2011-05-25 16: 08: 00.971 Тестовая строка [1813: 207]: ____ байт: √Ç
2011-05-25 16: 08: 00.971 Тестовая строка [1813: 207]: Ü ____ байт: √ú