"testあ"のUTF-8表現は、74 65 73 74 e3 81 82 (1バイトデータの表記は全部16進、以下同様, python3風に書くとb'\x74\x65\x73\x74\xe3\x81\x82')で、chardetが判定するのは「文字列」ではなく、このバイト列です。 ちなみにこのバイト列をUTF-8, Shift_JIS, EUC-JP, ISO-8859-1, Code Page 437, Windows-1254で解釈すると、以下のようになります。 UTF-8 testあ (まぁ、当たり前) Shift_JIS (不正) EUC-JP (不正) ISO-8859-1 testã (81 82 は制御コードにあたるので見えないが不正ではない) CP437 testπüé Win1254 testã‚ (81は未定義なので本来は不正、chardetは未定義にあたるバイトが現