BLOGakisuteが主に技術的なネタを書き溜めるブログです。しましょうTwitterにメッセージを送信する際に、クライアント側でメッセージの長さを判定して画面に表示したいというような要件があると思います。マルチバイトな文字コードを使っていると文字列の長さを正確に求めるのが大変なようです。■何がどう大変なのか図を書いてみました。「文」が文字数、「b」がバイト数を表しています。ほかの言語の場合もそれぞれ相当するメソッドまたは関数が用意されていると思います。文字数が実際の文字数と一致するため問題なく長さを求めることができます。面倒なのが下のケース。ウムラウト記号や濁点・半濁点が一文字として入力されてしまっている場合です。通常滅多にこのような文字列に遭遇することはないのですが、まれにこのような文字列を入力させる処理系があるようです。この場合はウムラウト記号や濁点・半濁点も一文字として認識されてしまうため、実際の文字数と文字列長判定メソッドが返す文字数が異なってきます。このような場合も自然な文字列の長さを測定して140文字かどうかを判断しているらしいです。呼ばれる処理を行って文字を圧縮する必要があります。場合には以下のようなメソッドが標準で用意されています。呼ばれるフォーマットの文字列に変換してくれます。それぞれの文字列がどのような表現を表しているかは、以下のページを参考にしてみてください。英語ですが図説がついてるので非常にわかりやすいです。http://unicode.org/reports/tr15/http://homepage1.nifty.com/nomenclator/unicode/normalization.htmほかの言語、たとえばPythonやRubyなどでこの機能が提供されているかどうかはわかりません。読み込ませようとして一部はまってしまったので共有します。以下のコードの様に、ファイルスキームのURLを用いて画像を読み込もうとするとエラーになります。中の以下のコードが直接的な原因です。