我试图将欧元符号放在以这种方式传递给 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/