如何将2字节ASCII(ISO / IEC 8859-1)字符转换为UTF8字符?

时间:2015-09-22 10:36:10

标签: c encoding utf-8 character-encoding latin1

我想用C语言将 2字节ASCII(ISO / IEC 8859-1)Latin-1字符转换为UTF8字符。 如this website所述,Latin-1字符的值从 C3 80 C3 BF

以下是信息。 我有一个现成的代码,我想显示一个带有Latin-1字符集的键盘。 已经实现了一些逻辑用于解码目的,但它仅在某些特定条件下工作。

char key_latin[20];    // one ROW of keyboard
unsigned int codepoint;

key_latin[0]=0xC3;                  
key_latin[1]=0x00;
key_latin[2]=0xC3;                  
key_latin[3]=0x00;

codepoint = ((key_latin[0] & 0x1C) << 6) + (key_latin[0] & 0x03) <<6) + key_latin[1] & 0x3F);    //implemented logic

然后它正确显示'À'和{​​{1}} = 0xC0的值,但它只显示一个字符,其他字符不显示在同一行中。

当我在下面做的时候,(作为上述链接的参考)

codepoint

它在屏幕上没有显示任何内容。

我的主要观点是,

  

如何显示或编码 2字节ASCII(ISO / IEC 8859-1)   Latin-1 UTF8 char key_latin[20]; // one ROW of keyboard unsigned int codepoint; key_latin[0]=0xC3; key_latin[1]=0xA0; key_latin[2]=0xC3; key_latin[3]=0xA1; codepoint = ((key_latin[0] & 0x1C) << 6) + (key_latin[0] & 0x03) <<6) + key_latin[1] & 0x3F); //implemented logic

     

是否有必要在编码中获取其他1字节C的值?

请告诉我您关于显示ASCII(ISO / IEC 8859-1)Latin-1字符的建议和可能的方法。

[如果需要有关此问题的更多信息,请告知我们。]

0 个答案:

没有答案