目前我有一个程序,旨在模仿(Linux)文件命令的功能。我解析了一个带有一些字符的.txt文件,并将其解释为相应的解释。然而,当涉及到ISO8859-1(Latin 1)时,我很难区分文件。因为它将ISO8859-1字符转换为UTF-8编码(例如æ = e6,编码为c3 b8?)。
当我制作并传递这个.txt文件给文件命令时:
printf "æøå" > test.txt
file test.txt
它简单地返回:
UTF-8 Unicode文本,没有行终止符。
* od -c -tx1 test.txt
:返回 *
0000000 303 246 303 270 303 245
c3 a6 c3 b8 c3 a5
0000006
有人能解释一下为什么会出现这种情况吗?因为“æøå”前缀包含在ISO8859-1编码中,但却被解释为UTF8编码。
od -c -tx1 test.txt
的输出,以确保文件确实包含预期的十六进制值。顺便说一句:虽然您可能想在C中实现某些内容,但您的问题与C无关,因为它仅涉及一些shell命令。 - Bodo