最近JavaScriptで苦労しています。
データベースの文字セットは UTF-8 です。ページで JavaScript を使用して、入力テキストが UTF-8 で保存されたときにそのバイト長を占めることを確認する必要があります。 JavaScript の String オブジェクトには length 属性がありますが、この計算はバイト数ではなく文字数です (この問題は常に何度も起こります。Delphi で遊んでいたとき、プログラムを書かなければならなかったのを覚えています) Delphi の文字列の長さはバイト数であるため、文字列内の文字数を計算します...)。怠惰な方法は、検証コードの最大長をデータベースの対応するフィールドの長さの 1/3 に設定することですが、これは正確に言うと少し不適切です。
そこで、JavaScript で UTF-8 に格納されている String のバイト数を確認する方法を見つけたいと思います。Unicode の導入に関する多くのドキュメントを見つけました。最も重要なことは、それに対応するストレージの長さです。文字エンコード値:
UCS-2 エンコード (16 進数) UTF-8 バイト ストリーム (バイナリ)
0000 - 007F 0xxxxxxx (1 バイト)
0080 - 07FF 110xxxxx 10xxxxxx (2 バイト)
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx (3 バイト)
コードは次のようになります:
[