编程语言:C++
,渲染器:GLStudio
。
我想渲染Unicode字符'GREEK CAPITAL LETTER DELTA' (U+0394)
,如:ΔP
代码是:
sprintf(somebuffer,"%cP",'\u0394');
然而结果是白色垂直矩形'(U + 25AF)如下:
▯P
以下是我使用的参考:http://www.fileformat.info/info/unicode/char/25af/index.htm
显然渲染器上存在unicode映射问题,但是我无法确切地指出它,所以想在SO中尝试我的机会,然后尝试绘制一个实际的opengl三角形作为解决方法。非常感谢任何帮助或建议!
答案 0 :(得分:2)
这完全取决于渲染器所期望的编码。它预计或支持UTF-8的可能性很大:
sprintf(somebuffer, u8"\u0394P");
这将形成以UTF-8编码的字符串<capital delta><P>
并将其写入缓冲区(不检查大小或使用更合适的C函数,如strncpy
)。然后由渲染器决定是否采用这些字节并按照您的预期渲染它们。
目前发生的事情很可能是通过int
参数代替期望%c
的{{1}}占位符。我会想象,虽然未定义的行为,它取第一个字节并将其视为char
。