android - Android Lollipop 上的 va_start/va_end + vsnprintf 问题

标签 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

请帮我定位问题。

附注NDK,API 级别 10

编辑:

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

最佳答案

看起来您使用的是扩展 ASCII 而不是 UTF-8。 IIRC 支持各种 printf 函数的代码需要 UTF-8。

关于android - Android Lollipop 上的 va_start/va_end + vsnprintf 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28736114/

相关文章:

c++ - 在 C++ 中解析和比较 IP 地址

java - ksoap2 复杂参数

android - ionic 平台配置错误: ubuntu

c++ - 使用基类的派生类值

android - 在 Android apk 中打包 linux 二进制文件

java - 将指针从 C 传递到 Java 变为 NULL

android - 杀死 Android 上长时间运行的 native 代码

android - ViewPager2 不破坏 fragment

java - 在 WebView 中使用来自 sqlite 数据库的 URL

c++ - 从字符串常量到 'char*' 的折旧转换