错误:用于编码 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 编码?