我試圖將用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