我有一个avmetadataitem,它具有在CP1251(西里尔)中编码的字段。阅读Item.StringValue后,我会得到垃圾 - 错误编码的字符串。 我尝试将该字符串转换为RAW UTF8,然后使用CP1251编码创建新字符串 - 没有运气,结果是nil。尝试拍摄itavavalue - 没有骰子,它包含一个原始列表数据(从BPL师开始......)。

任何想法都非常欣赏。

提前感谢。

有帮助吗?

解决方案 2

我已经使用Mike Ash的NSPropertyListReader_Binary1结束并获得了原始数据,然后将其甘蓝甘蓝才能进行编码。

可怕 - 但工作。

其他提示

swift 2.0解决方案:

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

let convertedTitleMeta: String = String(data: origMeta, encoding: NSUTF8StringEncoding)!
.

我有avmetadataitem扩展:

extension AVMetadataItem {

    /// stringValue: ISO-8859-1 → UTF-8
    var utf8String: String? {
        guard let data = stringValue?.data(using: String.Encoding.isoLatin1, allowLossyConversion: true) else {
            return nil
        }
        return String(data: data as Data, encoding: String.Encoding.utf8)
    }
}
.

SWIFT 3.0解决方案:

let data: Data = item.timedMetadata!.first!.stringValue.data(using: String.Encoding.isoLatin1, allowLossyConversion: true)!

let title: String = String(data: data as Data, encoding: String.Encoding.utf8)!
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top