我正在用C ++编写一个文本编写器,我将使用一个短语字符串并为每个char值显示相应的位图字体。
现在,它适用于常规角色,但是我会为重音和其他角色(例如À,Á,Â,Ã等)获得奇怪的值
我这样做:
int charToPrint = 'a';
//use this value to figure which bitmap font to display
位图字体确实有这些字符,但是在这一行上我没有得到我应该得到的值,例如:195为Ã,199为Ç< / strong>等...
我尝试将项目的字符集从Multi Byte更改为Unicode,但我认为这对char-&gt; int转换没有任何作用......
如何使用字符进行此转换?
编辑:我正在使用Visual Studio 2012,Windows 7,它是一个带位图字体的OpenGL应用程序。 我根据它的 char 值映射了每个角色的位置/宽度/高度,因此角色 a 位于我的位图字体的位置97(加上宽度)占了)。
要绘制,我只需要根据字符代码计算位置。
我有一个我要显示的短语字符串,我循环遍历每个字符,计算charCode,并调用我的绘制函数。
对于带有重音的这些字符,我得到负值,所以我的绘制函数不做任何事情(例如,对于Ç没有位置-30)。 我需要弄清楚如何正确获取这些值并发送到绘图函数。
答案 0 :(得分:3)
使用Unicode ,已经是2013年了The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets
您将使用 wchar_t 作为类型和 UTF-16 / UTF-32 编码。这将使您的代码不仅支持“不规则”字符,而且支持更多“不规则”字符:)(没有普通字符这样的东西)。
示例强>
wchar_t c = L'Á';
printf("char: %lc encoding: %d\n", c, c);
c = 0xc1;
printf("char: %lc encoding: %d\n", c, c);
<强>输出强>
char: Á encoding: 193
char: Á encoding: 193