Twitterにメッセージを送信する際に、クライアント側でメッセージの長さを判定して画面に表示したいというような要件があると思います。当然、このような場合には入力されたメッセージを取ってきてその長さを求めてやれば良いのですが、どうやら UTF-8 などのマルチバイトな文字コードを使っていると文字列の長さを正確に求めるのが大変なようです。 ■何がどう大変なのか 図を書いてみました。「文」が文字数、「b」がバイト数を表しています。 Objective-C の場合は、「文」が ``[NSString length]`` を、「b」が [NSString lengthOfBytesUsingEncoding:NSUTF8StringEncoding] を表します。ほかの言語の場合もそれぞれ相当するメソッドまたは関数が用意されていると思います。 上のケースが一般的な UTF-8 文字列です。この場合
![UTF-8 の文字列の長さを正確に求めるためには Normalize しましょう](https://cdn-ak-scissors.b.st-hatena.com/image/square/dfa090b27ffb247a247a91124a71bd34c221ce2a/height=288;version=1;width=512/http%3A%2F%2F2.bp.blogspot.com%2F_9HdIXu4872o%2FS95ivLxVEdI%2FAAAAAAAACeo%2F-FS9YoBN2hE%2Fw1200-h630-p-k-no-nu%2FUnicodeNormalizationNote.png)