UTF-16 字符都至少为 16 位,其中一些是带有正确前缀(0xE000 到 0xFFFF)的 32 位。因此,简单地扫描每个字符以查看是否少于 128 个字符是行不通的。例如,两个字节 0x20 0x20 将在 ASCII 和 UTF-8 中编码为两个空格,但在 UTF-16 中编码为单个字符 0x2020(匕首)。如果已知文本是英语,偶尔包含非 ASCII 字符,则大多数其他字节将为零。但是,如果没有一些关于文本和/或其编码的先验知识,就没有可靠的方法区分通用 ASCII 字符串和通用 UTF-16 字符串。