

【stackoverflow.comにも同じ質問を投稿しています】  
こんにちは。

iOSでAVFoundationを使用してカメラアプリを開発しています。  
撮影した写真に対して、EXIFのUserCommentを追加しようとしているのですが、英語など1バイト文字列ではうまくいきますが、日本語の2バイト文字列を追加しようとすると、途中で切れてしまいます。  
以下のコードでは、すべての文字が正しくUserCommentに追加されました。

[code]

    NSString *UserComment = @"Can I set Exif UserComment String in such a way? I cannot understand Japanese Characters are not accepted.";  
    [EXIFDictionary setObject:UserComment forKey:(__bridge NSString *) kCGImagePropertyExifUserComment];  
    
[/code]

以下のコードは、UserCommentに追加はできるものの、途中までしか追加できてませんでした。

[code]

    UserComment = @"そんなこといったって、だめだもんはだめだで、しゃーがないべさ。ほだら。だば、あきらめてしごとしてくんろ。ほりほり。わーったか？ほーり。";  
    [EXIFDictionary setObject:UserComment forKey:(__bridge NSString *) kCGImagePropertyExifUserComment];  
    
[/code]

exiftoolで確認すると、以下の文字列がUsrCommentに追加されているのが確認できました。

そんなこといったって、だめだもんはだめだで、しゃーがないべさ。ほだ

これはSDKのバグでしょうか？どなたか原因や回避方法をご存知でしたら、ご教授いただけますでしょうか。


CC BY-SA 3.0
2015-07-13T05:17:08.540
12315
2015-07-17T13:50:54.140
2015-07-14T03:17:45.697
10509
10509
question
ios exif
iOS: EXIFのUserCommentに日本語を記録しようとすると、途中までしか入らない


iOS7で発生するバグかと思います。(手元に実機がないので試せませんが)

文字列が切れる位置、対処法から察するに、文字数の計算にバグがあるのだと思います。  
どの例も文字列が切れる位置が、(バイト数ではなく文字数カウントで)ちょうど半分付近なので、「文字数＋２のASCII文字をパッディング」する対処法と合致します。

参考:

[■[iPhoneプログラミング]JPEGファイルのExif情報を読み書きする](http://d.hatena.ne.jp/nakamura001/20100717/1279376457)  
コメント欄から。(ツールに関するコメントです)

> iOS6.1ではOKですが、iOS7だと文字が途中で切れてしまいますね。  
>  文字数＋２のASCII文字をパッディングすれば、文字自体は書き込めるのですが、パディングした文は0x00が埋め込まれてしまいます。

[■[iOSプログラミング]iOS SDK 7でImageIO
Frameworkを使ってExif情報にユーザコメントを書き込む時は注意が必要](http://d.hatena.ne.jp/nakamura001/20131215/1387125345)

このページにも、同様の現象が見られたと書かれています。


CC BY-SA 3.0
2015-07-17T13:50:54.140
12453
2015-07-17T13:50:54.140
10572
12315
answer