文字を表現することはできない。エンコーディングで扱われる。1文字のサイズは可変長である。型データ1個ではなく、2つ以上の並びで表現されることがある。型の配列を分割すると、多バイト文字を表すデータを分割してしまう危険がある。補助文字、多バイト文字、結合文字(他の文字を変化させる文字)の存在を考慮しないと、攻撃者によって入力検査を回避されてしまうかもしれない。したがって、1文字を表現するバイトの並びを分割してはならない。多バイト文字1文字の表現に2バイト以上必要となる文字セットでは、多バイト文字エンコーディングが使われる。多バイト文字エンコーディングであり、最大2バイトで1文字を表現している(先頭バイトと末尾バイト)。範囲2バイト文字の末尾バイトの値の範囲は、1バイト文字の範囲や2バイト文字の先頭バイトの値の範囲とオーバラップしている。多バイト文字がバッファの境界で分断されると、分断されない場合とは異なる解釈をされる可能性がある。文字表現」について以下のように記されている。仕様は、固定幅16ビットエンティティーとして定義されている。標準は、16ビット以上の表現を必要とする文字を許容するように変更された。スカラー値」として知られている。値のペアとして表現され、「上位サロゲート」範囲(\uD800-\uDBFF)からの最初の値と、「下位サロゲート」範囲(\uDC00-\uDFFF)からの第2の値から構成される。コードポイントを表す。コードポイントを表すために使用され、上位(最上位)11ビットはゼロである必要がある。値に関する動作は次のとおりである。値だけを受け入れるメソッドは補助文字に対応できない。値を未定義の文字として扱う。型データとして再構成しようとしている。ループを使ってバイトデータを読み込んでいる。ソケットから読み込んだデータが1024バイト以上ある場合には例外を投げる。これにより、信頼できない入力の読込みでメモリを使い果たすことを防止している。str;}このコードでは、多バイトエンコーディングで表現された文字の区切りとループの繰り返しによるデータの区切りとの間に不一致が起こる可能性を考慮していない。ループの次の繰り返しまで読み込まれない。生成される間に多バイトエンコーディングは分割されてしまう。その結果、多バイトエンコーディングが誤解釈されてしまう。メソッド)以下の適合コードでは、すべてのデータを読み込んでから文字列を生成している。str;}すべてのデータを読み込んでから文字列を生成することで、多バイト文字がバッファをまたいで分割されるのを回避している。クラスはデータを読み込みながらバイトデータから文字列に変換するため、多バイト文字を分割する危険がない。ソケットに1024バイトではなく1024文字を超えるデータがある場合、このコードは処理を中断する。先頭何文字かを削除しようとしている。メソッドを使うことで前述のコードの問題を解決しようとしている。