• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Java无法正确编码读取汉字

[复制链接]
菜鸟教程小白 发表于 2022-12-13 01:08:23 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在 10.8 中使用 Mac OS X。 我的 Appium Java测试代码需要从iOS app的无障碍标签中读取中文标签,而无障碍标签是中文字符串,但是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源码中创建的变量,其值为中文字符串, 但无法通过读取源代码转换正确的编码。

我还在终端中运行“locale”并得到以下结果:

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 应用程序,所以我无法解决问题通过更改输出源代码。

您能否提供我可以解决此问题的其他方法? 非常感谢。



Best Answer-推荐答案


我修复了这个问题,只是在 ~/.bash_profile 中添加了下面的语句

export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8

然后运行下面的命令来启用它。

source ~/.bash_profile

希望能帮助更多遇到这个问题的人。

关于Java无法正确编码读取汉字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25445048/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap