空手道 - 如何处理unicode角色?

时间:2017-10-28 05:51:42

标签: unicode karate

我想发送一个Unicode字符串作为请求参数,如下所示:

{"mobile": "۹۸.۹۱۲۳۴۳۰۴۱۲"}

但是空手道会像这样发送它:     {“mobile”:“?? ?? ??????????”} 我试图从包含我的文本的文件中读取Unicode文本:

۹۸.۹۱۲۳۴۳۰۴۱۲

然后阅读并以这种方式发送:

* def persianMobile1 = read('classpath:account/unicode/persian.mobile.txt')

        Given url karate.get('urlBase') +  "account/activateMobileByVerificationCode"
        And request
      """
      {
       "mobile":#(persianMobile1),
       "code":#(defaultVerificationCode)
      }
      """

发生了同样的问题。我该怎么办?

1 个答案:

答案 0 :(得分:1)

设置maven-surefire-plugin中的pom.xml以使用UTF-8文件编码。如果它已经存在,请添加此<plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.10</version>
            <configuration>
                <argLine>-Dfile.encoding=UTF-8</argLine>
            </configuration>
        </plugin>

编辑:看起来OP正在使用Gradle。您需要获得Karate(我假设是通过JUnit运行)将JVM file.encoding设置为UTF-8 - 以解决此问题。

以下链接可帮助您在Gradle中执行此操作:https://discuss.gradle.org/t/no-possibility-to-set-file-encoding-for-junit-tests-in-gradle-2-13-and-odler/17223

如果您需要,我建议您使用Java dev。