質問

私は、CP1251(Cyrillic)でエンコードされたフィールドを持つAVMetadataItemを持っています。item.StringValueを読んだ後、私はゴミを取得します - 誤ってエンコードされた文字列。 その文字列をRAW UTF8に変換してから、CP1251エンコーディングを使用して新しい文字列を作成しました - 運がない、結果はnilです。item.datavalue - diceを取得しようとしました、それは生のリストデータ(BPList ...から始めて)を含みます。

どんなアイデアも非常に高く評価されています。

事前にありがとうございました。

役に立ちましたか?

解決 2

Mike AshのNSPropertylistReader_Binary1を使用して、RAWデータを取得してから、NSStringがエンコードされるようにそれをマングリングしました。

恐ろしい - しかし働いた。

他のヒント

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