Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Encoding of AVMetadataItem

I have a AVMetadataItem which has fields encoded in CP1251 (Cyrillic). After reading item.stringValue I get garbage - incorrectly encoded string. I've tried converting that string to raw UTF8 and then creating a new string using the CP1251 encoding - no luck, result is nil. Tried taking the item.dataValue - no dice, it contains a raw list data (starting with bplist...).

Any ideas are very appreciated.

Thanks in advance.

like image 326
reflog Avatar asked Feb 21 '23 04:02

reflog


2 Answers

Swift 2.0 solution:

let origTitleMeta: NSData = (<AVMetadataItem>.timedMetadata?.first?.stringValue?.dataUsingEncoding(NSISOLatin1StringEncoding, allowLossyConversion: true))!

let convertedTitleMeta: String = String(data: origMeta, encoding: NSUTF8StringEncoding)!
like image 98
Mugurel Avatar answered Feb 25 '23 00:02

Mugurel


I've ended up using Mike Ash's NSPropertyListReader_binary1 and getting the raw data and then mangling it so that NSString would it it's encoding.

Horrible - but worked.

like image 25
reflog Avatar answered Feb 24 '23 23:02

reflog