我已经用英语和希腊字符定义了相同的 char 数组。
char myText[]="ΗΤΙΑ ΗΤΙΑΑΑ ΛΟΥΛΟΥΔΙΑΣΜΕΝΗ!!!1234567890";
// char myText[]="HTIA HTIAAA LOULOUDIASMENH!!!1234567890";
当我打印strlen(myText);
char 数组的长度时,第一个具有希腊 UTF8 字符的长度为 63 个字符,而第二个具有 39 个字符。为什么会发生这种情况?谁可以解决这个问题,或者正确的问题是如何对希腊语 Unicode 希腊语字符进行语法处理,以便程序正确理解它们?
我将字符数组发送到 LED 矩阵,并且我的消息不会像字符为英文时那样显示在屏幕上。希腊字符或非 ASCII 字符似乎大于一个字节。
我有一个 switch 函数来检查字符并为每个字母返回一个适当的字节数组。我已经将 switch 的默认大小写设置为字符!
所以而不是得到HTIA HTIA
I get !H!T!I!A!
。所以我的开关将希腊字符理解为超过 1 个字节,并首先返回默认情况下的女巫!
,然后返回正确的字符。
此外,当我尝试打印文本时,串行监视器上出现错误(字符显示不正确)。