gpt4 book ai didi

java - 无法在 powershell 中设置正确的编码

转载 作者:太空宇宙 更新时间:2023-11-04 11:27:16 25 4
gpt4 key购买 nike

我有一个 arff 文件,它具有以下属性:

@ATTRIBUTE "åäö" NUMERIC
@ATTRIBUTE "åøã" NUMERIC

文件以 UTF-8 保存。我正在我的 Java 应用程序中使用 weka API 读取此文件。我可以在 Eclipse 中运行该程序,没有任何问题。

但是,当我尝试从 powershell 或命令提示符运行程序时(只需使用 java -jar my-app.jar -data path/to/mydata.arff),我遇到以下错误:

java.io.IOException: Unable to determine structure as arff (Reason: java.lang.IllegalArgumentException: Attribute names are not unique! Causes: 'å??' ).

at weka.core.converters.ArffLoader.getStructure(ArffLoader.java:1204)

at weka.core.converters.ArffLoader.getDataSet(ArffLoader.java:1234)

at weka.core.converters.ConverterUtils$DataSource.getDataSet(ConverterUtils.java:269)

我尝试更改编码(默认为 OEM United States (IBM437)),如下所示。

尝试1:在我的 ps1 脚本中设置 UTF-8 编码,如下所示 ( source ):

$OutputEncoding = New-Object -typename System.Text.UTF8Encoding
[Console]::OutputEncoding = New-Object -typename System.Text.UTF8Encoding

这没有帮助,只是将控制台输出从 ...Causes: 'å??'... 更改为 ...Causes: '�??'...

尝试2:直接在控制台上更改编码,如下所示( source ):

$OutputEncoding = [Console]::OutputEncoding

这也不起作用。

有办法解决这个问题吗?

更新:此问题与 Printing Unicode characters to the PowerShell prompt 不重复。 ,就像在我的例子中,命令提示符上是否显示正确的字符并不重要,因为我的程序不会尝试这样做。另请注意,上述问题的答案(使用 [Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(850))产生了完全相同的结果,因此没有提供此问题的解决方案。此外,使用 PowerShell ISE 和 ConEmu 执行也没有帮助。

我认为,如果可以为“ session ”(或环境/上下文,不确定如何调用它)设置正确的编码,那么我的程序就足以正确处理 arff 文件。但是,我不确定如何。

最佳答案

已关注 @TessellatingHeckler's comment ,我通过设置 JVM 的编码选项解决了这个问题:添加系统变量 JAVA_TOOL_OPTIONS,然后将值设置为 -Dfile.encoding=utf-8 (来源: https://stackoverflow.com/a/24265723/2270340 )。

现在,每次我启动 java 时,都会显示以下内容已考虑到设置的选项:

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=utf-8

我发布此答案是为了分享我的发现。如果有更好的方法,请发表答案/评论。

关于java - 无法在 powershell 中设置正确的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44208347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com