Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JNA结果UTF8中的字符编码结果_Java_Encoding_Utf 8_Jna_Cyrillic - Fatal编程技术网

Java JNA结果UTF8中的字符编码结果

Java JNA结果UTF8中的字符编码结果,java,encoding,utf-8,jna,cyrillic,Java,Encoding,Utf 8,Jna,Cyrillic,我正在使用JNA获取窗口数据。如下所示,结果是一个字节数组。我需要西里尔文字符的可读性,但它目前没有发生,它只是返回了一堆问号。问题不在于转换为字符串,我已经检查了字节数组值 我试过System.setProperty(“jna.encoding”,“UTF-8”)但它看起来只对Java字符串输入有用,而对输出不有用 代码: 感谢阅读,任何帮助都将不胜感激 编辑 谢谢你的技术法师。最终解决方案: char[] buffer = new char[2048]; HWND hwnd = User32

我正在使用JNA获取窗口数据。如下所示,结果是一个字节数组。我需要西里尔文字符的可读性,但它目前没有发生,它只是返回了一堆问号。问题不在于转换为字符串,我已经检查了字节数组值

我试过
System.setProperty(“jna.encoding”,“UTF-8”)但它看起来只对Java字符串输入有用,而对输出不有用

代码:

感谢阅读,任何帮助都将不胜感激

编辑 谢谢你的技术法师。最终解决方案:

char[] buffer = new char[2048];
HWND hwnd = User32.INSTANCE.GetForegroundWindow();
User32.INSTANCE.GetWindowTextW(hwnd, buffer, 512);
String result = String.valueOf(buffer).trim();

返回的字节数组中的字符是什么?您确定它是UTF8而不是windows的默认编码(
windows-1251
)吗?您是否尝试过使用不同编码的
Native.toString()
?您是否尝试过
GetWindowTextW()
,这将完全绕过此问题?已解决!不知道GetWindowTextW(),它不包括在javadoc中(GetWindowTextA()也不包括,但只有GetWindowText())。非常感谢你!定义的
GetWindowText()
映射实际上自动映射到
GetWindowText()。我们没有为ASCII版本添加显式绑定。
char[] buffer = new char[2048];
HWND hwnd = User32.INSTANCE.GetForegroundWindow();
User32.INSTANCE.GetWindowTextW(hwnd, buffer, 512);
String result = String.valueOf(buffer).trim();