【发布时间】:2020-10-21 22:07:02
【问题描述】:
我需要处理一些 Win-1251 编码的文本(8 位编码,对西里尔文使用 128..255 中的一些)。据我所知,创建 C 时考虑了 7 位 ASCII,没有明确支持 127 以上的单字节字符。所以我有几个问题:
- 哪种类型更适合此文本:
char[]或unsigned char[]? - 如果我将
unsigned char[]与内置函数(strlen、strcmp)一起使用,编译器会警告char*的隐式转换。这样的演员阵容能打破什么吗?我应该重新实现一些函数来明确支持unsigned char字符串吗?
【问题讨论】:
-
为了您的目的,您可以检查您的编译器,如果它使用 char 的有符号或无符号值。检查您可能使用的所有编译器。大多数编译器还有一个标志来更改 char 的“符号”。
标签: c string character-encoding pointer-conversion