当前位置: 首页 > 面试题库 >

如何在Java中将标准输出更改为“ UTF-8”

费辰阳
2023-03-14
问题内容

我使用Java程序从网站下载文件,标题如下所示

Content-Disposition attachment;filename="Textkürzung.asc";

没有指定编码

我要做的是下载后将文件名传递给另一个应用程序以进行进一步处理。我用

System.out.println(filename);

在标准输出中,字符串打印为 Textk³rzung.asc

如何在Java中将标准输出更改为“ UTF-8”?

我尝试编码为“ UTF-8”,但内容仍然相同

更新:

我无需进行任何代码更改即可解决此问题。在我从其他应用程序将此文件称为我的jar文件的地方,我执行了以下操作

java -DFile.Encoding=UTF-8 -jar ....

这似乎已经解决了问题

谢谢大家的支持


问题答案:

您看到的结果表明您的控制台希望文本使用Windows“代码页850”编码-字符ü具有Unicode代码点U +
00FC。字节值0xFC在Windows代码页850中呈现为³。因此,如果您希望该名称正确显示在控制台上,则需要使用编码“ Cp850”进行打印:

PrintWriter consoleOut = new PrintWriter(new OutputStreamWriter(System.out, "Cp850"));
consoleOut.println(filename);

这是否就是您的“其他应用程序”所期望的是另一个问题-如果其他应用程序也正在读取其标准输入为Cp850,则它将仅看到正确的名称。



 类似资料:
  • 我不知道这个代码出了什么问题,我得到的标准输出是空的错误帮助我! 提供的投入:

  • 默认情况下,当您将命令的输出重定向到文件或通过管道将其导入PowerShell中的其他内容时,编码是UTF-16,这是不有用的。我想把它改成UTF-8。 可以通过将语法替换为来逐个实现,但每次都要重复这样做会很尴尬。 在PowerShell中设置东西的持久方法是将它们放在中;我已经验证了这个文件确实是在启动时执行的。 曾经说过,可以使用设置输出编码,但我尝试过,没有效果。 https://blog

  • 问题内容: 嗨,我有一个测试场,我不想在其中进行英语测试(例如 俄语),但是在我的动作课中我得到的不是文字?????????。我 试图编写简单的过滤器,该过滤器描述 了struts2中的参数字符集转换 但是还是不行..有人可以帮我吗 更新我有这个 我想用俄语进行测试,然后将其发送给我的 action。但是在我的action类中,我得到的不是文本,而是纯文本?????????。要解决 此问题,我需要

  • 我正在使用带有Selenium的testNG。我有两种记录器,一种是log4j记录器,另一种是testNG reporter.log()。现在的问题是我需要记录一些中文文本。但它是作为‘????’而不是中文文本。所以我更改了log4j.properties文件,只添加了两行: 现在,在我的log4j日志中,它是正确的,但在testNG Reporter.log()中,它仍然是“?????”。

  • 问题内容: 我在JList中有一个单词列表。每次将鼠标光标指向一个单词时,我都希望光标变为手形光标。现在我的问题是该怎么做? 有人可以帮我解决这个问题吗? 问题答案: 在JList上使用MouseMotionListener来检测鼠标何时输入,然后调用将其转换为。 样例代码:

  • 问题内容: 我正在尝试运行shell命令,捕获stdout并将该输出写入文件。但是,我似乎缺少了一些步骤,因为当程序存在时,我要写入的文件为空。如何捕获命令的标准输出并将其写入文件? 问题答案: 您需要冲洗编写器。添加以下内容: