3

ココアで文字列エンコーディングを決定する方法は? 最近、ラジオプレーヤーをやっています.id3タグのテキストが文字化けすることがありました.

これが私のコードです:

CFDictionaryRef audioInfoDictionary;
UInt32 size = sizeof(audioInfoDictionary);
result = AudioFileGetProperty(fileID, kAudioFilePropertyInfoDictionary, &size, &audioInfoDictionary);

ID3 情報は audioInfoDictionary にあります。id3 が utf8 エンコーディングを使用していないことがあり、タイトル、アーティスト名が文字化けしていました。

文字列が使用するエンコーディングを特定する方法はありますか?

スペシャルthx!

4

1 に答える 1

3

これは NSString オブジェクトですが、特定のエンコーディングはありません。これは、作成時に決定されたエンコーディングを使用して、入れられたものを表すことが保証されているためです。ドキュメントのエンコーディングの操作セクションを参照してください。

ID3タグはどこから取得していますか?この情報を「受け取る」ときが、そのエンコードを決定する最適な時間です。イニシャライザのリストについては、文字列の作成と初期化および次のいくつかのセクション (ファイルと URL の作成について) を参照してください。エンコーディングを設定できるものもあれば、文字列の作成時にシステムが決定した「最良の推測」エンコーディングを (参照により) 返すものもあります。システムの報告された推測については、「usedEncoding:」を含むメソッドを探します。

これはすべて、その文字列を何に渡すかによって異なります。ファイル (MP3) または Web サービス (インターネット ラジオ) から読んでいますか? 後者の場合、サーバーの応答にはエンコーディングが含まれている必要があり、それが間違っている場合は、推測する以外に行うことはあまりありません。

于 2012-05-20T15:49:41.743 に答える