我试图将用C编写的程序移植到使用NDK和JNI的Android中,并且我陷入了一个令人发疯的荒谬问题。(Android NDK)包含非ASCII字符的字符串被切断
要长话短说,如果我这样做...
char str[1024];
sprintf(str, "Hellö, this is söme stränge letters.");
... 的strlen(STR)返回35,符合市场预期。对?
但是,如果我包括符,并且做到这一点...
char str[1024];
sprintf(str, "Hellö again. Here's a number: %d", 1);
... 的strlen(STR)返回4
你看到发生了什么?看起来NDK不能(或不会)接受字符串中的非ASCII字符,如果我尝试格式化它们。
任何时候我在格式字符串中包含大于127的ASCII字符时,它都会被截断。就像它是以NULL结尾的。
这是一个错误?这是预期的行为?
最终,我的问题是:我该怎么做才能解决这个问题?
非常感谢提前。
你看过str的编码吗?它很可能是以非ASCII友好的方式编码的,例如UTF-8。 – bruceg
@bruceg不,对不起,我没有。我怎么做? – user5716859
_“我该怎么做?”_执行'str'内容的hexdump(即对于值为0的字节,打印为“00”;对于值255,打印为“FF”等)。 – Michael