フィールド最大値が200バイトしかない入力システムを作成しています。私は(あまりにも、アップの議論のために、この方法かもしれませんが!)、次を使用してバイトの残りの数をカウントしています:文字数ではなくバイト数に基づくSubstr
var totalBytes = 200;
var $newVal = $(this).val();
var m = encodeURIComponent($newVal).match(/%[89ABab]/g);
var bytesLeft = totalBytes - ($newVal.length + (m ? m.length : 0));
これがうまく動作するように見える、誰かがデータの大きな塊にペーストしたが場合、私は入力をスライスし、その200バイトのみを表示できるようにしたい。私は擬似コードでは次のようになります:
$newText = substrBytes($string, 0, 200);
何か助けや指導をいただければ幸いです。
編集は:ここで起こってすべてがところで
編集2 :)をUTF-8である:私は、私はループすべての文字をできることを承知していると評価し、私は何かがあるかもしれない期待していたと思いますこれを少しでも優雅に処理してください。
ありがとうございます!
バイトとして、あなたの入力を処理し、テキストではない理由は何ですか? http://www.w3schools.com/jsref/jsref_obj_string.asp – jazzytomato
私は間違っているかもしれませんが、文字コードの間にある種のiconvのような変換が必要になるという印象があります。簡単に聞こえません。 –
これが接続されているシステムでは、テキストペイロードのサイズが200バイト以下である必要があります。 – Slazlaa