Android Lollipop上的va_start / va_end + vsnprintf问题

时间:2015-02-26 06:46:00

标签: android c++ android-ndk

我使用下一个功能:

void CharTest(const char * format,...)
{
  char buffer[1024];
  va_list    args;
  va_start(args, format);
  vsnprintf(buffer, sizeof(buffer), format, args);
  va_end(args);

  fnt->Render(0, 30, 0, buffer);

  for(int i=0; i<strlen(buffer); i++)
  {
    fnt->printf(0, 60 + i*30 , 0, "%d) - %d", i+1, (int)buffer[i]);
    fnt->printf(200, 60 + i*30 , 0, "%d) - %c", i+1, buffer[i]);
  }
}

测试示例:

CharTest("Russian. Русский");

在Android 4.x上它可以正常工作,但在Android 5上我遇到了非英文字符的问题。

来自设备的屏幕截图:

image

请帮我解决问题。

P.S。 NDK,API等级10

修改

Dan Albert:你说对了!谢谢!:)

1 个答案:

答案 0 :(得分:0)

看起来你正在使用扩展ASCII而不是UTF-8。 IIRC支持各种printf功能的代码期待UTF-8。