我在10.8中使用Mac OSX。我的Appium Java测试代码需要从iOS应用的可访问性标签中读取中文标签,而可访问性标签为中文字符串,但是当Java以错误的编码方式将中文字符串读取到内存中时。我的Java源代码另存为“ UTF-8”;我的终端设置为“ UTF-8”;
和酸味代码如下:
String correct_aid = "你好";
String got_aid = driver.findElement(By.name('sayHello')).getText();
if (got_aid.contains(correct_aid)) {
System.out.println("Got accessibility label string is matched.");
}
else {
System.out.println("Got accessibility label string is not matched.");
System.out.println("Expected accessibility label is: [" + correct_aid + "]");
System.out.println("Captured accessibility label is: [" + got_aid + "]")
}
我得到的结果如下:
Got accessibility label string is not matched.
Expected accessibility label is: [你好]
Captured accessibility label is: [????]
看起来,Java可以打印出在Java源代码中创建的变量,并且该值是中文字符串,但是无法通过读取输出源来转换正确的编码。
我还在终端中运行“语言环境”,并得到以下结果:
LANG=
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
如您所知,如果输出源是txt文件,则可以在保存时将编码更改为“ UTF-8”以进行修复,但是现在我的输出源是iOS应用程序,因此无法通过更改源代码编码。
您能否提供我可以解决此问题的其他方法?非常感谢。
我解决了这个问题,并在下面将语句添加到〜/ .bash_profile
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
然后运行下面的命令将其启用。
source ~/.bash_profile
希望可以帮助更多遇到这个问题的人。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句