【发布时间】:2014-09-12 08:07:58
【问题描述】:
我正在编写一个简单的程序来计算我放入链接列表的文本文件 (UTF-8) 中的字符。一切似乎都运行良好,除了每次实例计算 æ ø å (挪威字母表中的最后三个字符)两次。所以如果字符串是æøå,我得到 6 而不是 3。如何解决这个问题?
int length()
{
pointer = root; // Reset pointer
int i; // Looping through data in node
int len = 0; // Counting characters
int sizedata = sizeof(pointer->data); // Sets size limit for data in node
while(pointer != NULL)
{
for(i = 0; i < sizedata; i++) // Looping through data in node
{
if(pointer->data[i] == '\0') break; // Stops count on end of string
len++; // Counting characters
}
pointer = pointer->next; // Linking to next node
}
printf("Length of text is: %d characters\n", len);
}
【问题讨论】:
-
您的文本文件是 UTF-8 格式吗?然后你应该根据它们在 UTF-8 中的长度来推进你的字符。只有 7 位 ASCII 字符占用一个字节;其余的 Latin1 字符占用两个字节。
-
具体来说,
c3 a6 c3 b8 c3 a5将是æøå所需的字节(以防您不知道)。 -
比如何更重要的是为什么。什么是“性格”?一个字形?代码点?如果是后者,为什么要计算它们?为什么不计算字节数?如果不是字节,那么字形?你想达到什么目的?请参阅utf8everywhere.org,Twitter 如何计算字符数。
标签: c unicode character counting