【发布时间】:2013-08-14 10:55:06
【问题描述】:
我用英语和希腊字符定义了相同的字符数组。
char myText[]="ΗΤΙΑ ΗΤΙΑΑΑ ΛΟΥΛΟΥΔΙΑΣΜΕΝΗ!!!1234567890";
// char myText[]="HTIA HTIAAA LOULOUDIASMENH!!!1234567890";
当我使用 char 数组的 strlen(myText); 打印长度时,第一个具有希腊 UTF8 字符的长度为 63 个字符,而第二个具有 39 个字符。为什么会发生这种情况?谁可以解决这个问题,或者正确的问题是如何对希腊语 Unicode 希腊字符进行语法处理,以便程序正确理解它们?
我将 char 数组发送到 LED 矩阵,并且 i 消息不会像字符为英文时那样显示在屏幕上。希腊字符或非 ASCII 字符似乎大于 1 个字节。
我有一个开关函数可以检查字符并为每个字母返回一个适当的字节数组。我已将开关的默认大小写设置为字符!
所以我没有得到HTIA HTIA,而是得到!H!T!I!A!。所以我的开关将希腊字符理解为超过 1 个字节,并首先返回默认大小写女巫 !,然后返回正确的字符。
此外,当我尝试打印文本时,串行监视器上出现错误(字符显示不正确)。
【问题讨论】:
-
你的
length函数是什么样的?发布它。 -
似乎是合理的......你有什么问题? (显然非 ASCII 字符在 UTF8 中更长,所以...)
-
如果我以 \uXXXX unicode 格式提供它,这会得到解决吗?也不应该是 8bit,因为它是 UTF8?
-
我很好奇您如何期望 8 位代表大约十万个可能的值...
标签: c++ c eclipse optimization arduino