我试图将欧元符号放在以这种方式传递给 native 函数(使用 JNA)的 Java 字符串中:

/*JAVA*/
String s= new String("Euro symbol=€");

nativefunction(s.getBytes(US-ASCII));


/*C++*/
void nativefunction(char *s)
{
    printf("%s",s);
}

native 函数输出:Euro symbol=?
为什么符号被打印为 ? 而不是

我也尝试使用欧元符号的 ascii 代码( \0x80 ),但结果是一样的。

最佳答案

US-ASCII 不包含欧元字符。也许您的意思是 Windows-1252,如果是这样,请使用:

nativefunction(s.getBytes("Windows-1252"));

如果还是不行,尝试在Java代码中使用Unicode转义序列:
String s= new String("Euro symbol=\u20ac");

如果它适用于 \u20ac 但不适用于 ,则需要配置源代码编码。

关于java - 欧元符号 JNA 转换问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5377063/

10-12 01:29
查看更多