错误:用于编码 windows-1251 的不可映射字符 (0x98)

Posted

技术标签:

【中文标题】错误:用于编码 windows-1251 的不可映射字符 (0x98)【英文标题】:error: unmappable character (0x98) for encoding windows-1251 【发布时间】:2018-12-19 04:08:04 【问题描述】:

我对项目的组装有问题:

D:...\Main.java:112: 错误:用于编码的不可映射字符 (0x98) windows-1251 robot.getBrowserControl().findElement(By.xpath("//div[.='НАПИСАТЬ']")).click();

这个错误在行: robot.getBrowserControl().findElement(By.xpath("//div[.='НАПИСАТЬ']")).click();

图片: error,IDEA settings。右下角选择 UTF-8。我不确定,但可能就像符号“И”

img errors

这是我的 gradle 文件

plugins 
    id 'java'


group 'ru.grbi3yh.processthesefiles'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories 
    mavenCentral()


jar 
    baseName = 'ProcessthFiles'



apply plugin: 'application'

dependencies 
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '2.41.0'
    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.7'

【问题讨论】:

您是否尝试过重命名元素,使其不使用特殊字符? 我建议你不要在变量/字段/任何东西的命名中使用西里尔字母。你这样问编码麻烦。 各位,这不是元素的名称,而是元素的内容。 我认为我没有知识可以提供帮助,但是什么是“robot”和“By.xpath()”?听起来他们要求 XPath 与 windows-1251 兼容,这很奇怪,但可能是可配置的。 我试图从其他文本中重命名并复制单词“WRITE”。这不是我的西里尔字母。这是谷歌邮件上的“写”按钮。 【参考方案1】:

为 Java 编译设置编码选项应该会有所帮助:

compileJava.options.encoding = 'UTF-8'
compileTestJava.options.encoding = 'UTF-8'

【讨论】:

【参考方案2】:

我不知道解决这个问题是否为时已晚(很肯定是的),但我的建议可以帮助其他人 - 问题在于西里尔符号。我有同样的问题,我通过使用 ANSI 格式保存文件解决了这个问题(如果你使用一些文本编辑器,如记事本,你可以用 ANSI 编码保存你的文件。也许这个选项应该在 IDE 中)

【讨论】:

【参考方案3】:

作为解决此错误的替代方法:

“错误:编码 windows-1251 的不可映射字符 (0x98)”

你也可以在Custom VM Options...里面更改default encoding:

通过添加,例如:

-Dfile.encoding=UTF-8

帮助 |编辑自定义 VM 选项,然后重新启动 IntelliJ IDEA。

【讨论】:

以上是关于错误:用于编码 windows-1251 的不可映射字符 (0x98)的主要内容,如果未能解决你的问题,请参考以下文章

HttpClient 抛出 System.ArgumentException:'windows-1251' 不是受支持的编码名称

如何区分 PHP 中的 MacRoman 和 Windows-1251 编码?

Win1251->UTF16转换

浏览器以 UTF-8 而非 windows-1251 显示页面

“用于编码 UTF-8 的不可映射字符”错误

如何更改字符串编码?