菜鸟教程小白 发表于 2022-12-13 01:08:23

Java无法正确编码读取汉字


                                            <p><p>我在 10.8 中使用 Mac OS X。
我的 <a href="http://appium.io/" rel="noreferrer noopener nofollow">Appium</a> Java测试代码需要从iOS app的无障碍标签中读取中文标签,而无障碍标签是中文字符串,但是java读取中文字符串到内存时编码错误。
我的java源代码另存为“UTF-8”;
我的终端设置为“UTF-8”;</p>

<p>和酸的代码类似如下:</p>

<pre><code>String correct_aid = &#34;你好&#34;;
String got_aid = driver.findElement(By.name(&#39;sayHello&#39;)).getText();
if (got_aid.contains(correct_aid)) {
    System.out.println(&#34;Got accessibility label string is matched.&#34;);
}
else {
    System.out.println(&#34;Got accessibility label string is not matched.&#34;);
    System.out.println(&#34;Expected accessibility label is: [&#34; + correct_aid + &#34;]&#34;);
    System.out.println(&#34;Captured accessibility label is: [&#34; + got_aid + &#34;]&#34;)
}
</code></pre>

<p>我得到的结果如下:</p>

<pre><code>Got accessibility label string is not matched.
Expected accessibility label is: [你好]
Captured accessibility label is: [????]
</code></pre>

<p>看来,java可以打印出java源码中创建的变量,其值为中文字符串,
但无法通过读取源代码转换正确的编码。</p>

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

<pre><code>LANG=
LC_COLLATE=&#34;en_US.UTF-8&#34;
LC_CTYPE=&#34;en_US.UTF-8&#34;
LC_MESSAGES=&#34;en_US.UTF-8&#34;
LC_MONETARY=&#34;en_US.UTF-8&#34;
LC_NUMERIC=&#34;en_US.UTF-8&#34;
LC_TIME=&#34;en_US.UTF-8&#34;
LC_ALL=&#34;en_US.UTF-8&#34;
</code></pre>

<p>如您所知,如果输出源是 txt 文件,可能会在保存时将编码更改为“UTF-8”以进行修复,但现在我的输出源是 iOS 应用程序,所以我无法解决问题通过更改输出源代码。</p>

<p>您能否提供我可以解决此问题的其他方法?
非常感谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我修复了这个问题,只是在 ~/.bash_profile 中添加了下面的语句</p>

<pre><code>export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
</code></pre>

<p>然后运行下面的命令来启用它。</p>

<pre><code>source ~/.bash_profile
</code></pre>

<p>希望能帮助更多遇到这个问题的人。</p></p>
                                   
                                                <p style="font-size: 20px;">关于Java无法正确编码读取汉字,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/25445048/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/25445048/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: Java无法正确编码读取汉字