==========================
文字コード
Exifのユーザコメントは先頭8バイトに文字コードが埋め込んである仕様です。
文字コードはASCII文字列で、16進数でそれぞれ次のようになっています。
- ASCII ・・・ (41 53 54 49 00 00 00) “ASCII ”
- Shift-JIS・・・ (4A 49 53 00 00 00 00 00) “JIS “
- Unicode・・・(55 4E 49 43 4f 44 45 00) “UNICODE “
- 未定義・・・(00 00 00 00 00 00 00 00)
iOSでは次のようにExifのユーザコメントが埋め込めます。
NSMutableDictionary *exif = metadata[(NSString *)kCGImagePropertyExifDictionary];
exif[(NSString *)kCGImagePropertyExifUserComment] = userComment;
ただし、文字コードを自動判別するようです。
日本語のみ、または英字のみの場合は何も問題がありませんが、混合するとお問題が生じます。試してみると次のようになります。
- OKの場合
- あいうえお —> あいうえお
- あabcdeいうえお —> あabcdeいうえお
- 1abcdeいうえお —> 1abcdeいうえお (先頭全角1)
- Zabcdeいうえお —> 1abcdeいうえお (先頭全角Z)
-NGの場合
- abcdeあいうえお —> abcde?????
- @abcdeいうえお —> @abcde???? (先頭全角@)
- #abcdeいうえお —> #abcde???? (先頭全角#)
データ文字数
シミュレータで実行するとこれでほぼOKなはずですが、実機で実行するとさらに問題が生じます。
iPhone4 (iOS7)では、次のようになります。
- 123456789012345678901234567890 —> 123456789012345678901234567890
- あいうえおかきくけこ —> あいうえ
- あいうえおかきくけこ□□□□□□ —> あいうえおかき
- あいうえおかきくけこさしすせそたちつてと —> あいうえおかきくけ
初代iPad mini (iOS6)では、次のようになります。
先頭に日本語を入れればうまくいくようです。
- あいうえお —> あいうえお
- あabcdeいうえお —> あabcdeいうえお
OS依存なのか、機種依存なのかは、今後検証する必要があります。