>>612
一般的にはそこには少なくとも二つのレイヤがある

一つは文字コードなどの意味解釈を行わずに純粋にバイト列として扱う(相対的に)下位レイヤ
もう一つは文字コードなどの意味解釈を行ないそれを扱う(相対的に)上位レイヤ

上位レイヤでは文字コードなど意味のある塊が揃った時点で揃った分を扱う
下位レイヤでは単なるバイト列として自由な区切りで意味を考えずに扱う

つまり下位レイヤを扱う関数ならばUTF8等の途中であろうがバイト列として扱うのみなのでエラーは起きない
一方で上位レイヤを扱う関数ならばUTF8等の途中を渡してはいけなくエラーとなる