超过 128 个的 C 字符



我有一个关于在 C 字符数组中保存字符的问题。

必须将文件中的文本读取到类型为"char"的数组中(我不能使用无符号字符)。当某些字符的值超过 127 时(例如 €、ä、ö、...),它会将它们保存为负值,但它们通常会占用更多空间(例如 € 需要 3 个负值)。

如何将这些负值计算回无符号字符。有人可以将我链接到有关该问题的教程或指南吗?

我认为你应该读这个:http://www.joelonsoftware.com/articles/Unicode.html

这取决于您使用的编码。

传统的 1 字节编码不会造成任何问题。是的,有些字符被视为负值,但它们仍然是阅读时的字符。如果你按原样写回去,它们将是原来的样子。

由于您确定每个欧元符号有 3 char秒,因此您正在处理一些 Unicode 编码,例如 UTF-8。

这意味着,您应该将它们存储在一些多字节类型中,例如 wchar_t .但这与您在char中存储数据的要求相矛盾。

我建议您先将文件转换为 1 字节编码,例如转换为 Win1252。此编码有 1 个字节的欧元符号。

如果你想使用Unicode,恐怕很难处理负面char。传统上用正整数表示 Unicode 值。

char x = 128;
unsigned char y = (unsigned char) x;
printf("%c %un", x, y);

最新更新