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

具有utf-8的Java BufferedWriter对象

全宪
2023-03-14
问题内容

我有以下代码,我想使输出流使用utf-8。基本上我有这样的字符éé所以看起来像是编码问题。

我看过很多使用…的例子

OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(path),"UTF-8");

我当前的代码是…

BufferedWriter out = new 
BufferedWriter(new FileWriter(DatabaseProps.fileLocation + "Output.xml"));

是否可以在不必使用OutputStreamWriter的情况下将此对象定义为UTF-8?

谢谢,


问题答案:

否。FileWriter您不能指定编码,这非常烦人。它始终使用系统默认编码。只是吸起来,并使用OutputStreamWriter包装一个FileOutputStream。当然,您仍然可以将OutputStreamWriter包装在BufferedWriter中:

BufferedWriter out = new BufferedWriter
    (new OutputStreamWriter(new FileOutputStream(path), StandardCharsets.UTF_8));

或从Java 8开始:

BufferedWriter out = Files.newBufferedWriter(Paths.of(path));

(当然,您可以将系统默认编码更改为UTF-8,但这似乎是一种极端的措施。)



 类似资料:
  • 问题内容: AFAIK,Python(v2.6)csv模块默认情况下无法处理unicode数据,对吗?在Python文档中,有一个有关如何从UTF-8编码文件读取的示例。但是此示例仅将CSV行作为列表返回。我想按名称访问行列,但方法是使用UTF-8编码的CSV输入文件。 谁能告诉我如何有效地做到这一点?我将必须处理100兆字节大小的CSV文件。 问题答案: 我自己想出了一个答案: 注意:此信息已更

  • 我尝试用JasperReport导出CSV文件,问题是当我想打印像“€”这样的货币时。 当我搜索解决方案时,我意识到这是关于文件编码的!我写这个代码! JasperReport导出的文件编码在“没有BOM的UTF-8”上。所以当我用Excel打开文件时,“€”看起来像“,”。但是当我用记事本打开文件时,“€”看起来像“€”。 在记事本上,我将文件编码转换为UTF-8(我认为是BOM),我保存文件。

  • 问题内容: 这里有两个问题。我有一组通常是带有BOM的UTF-8文件。我想将它们(理想情况下)转换为没有BOM的UTF-8。似乎可以解决这个问题。但是我真的看不到任何有关用法的好例子。这将是处理此问题的最佳方法吗? 同样,如果我们能够处理清楚知道的不同输入编码(看到的ASCII和UTF-16),那将是理想的。看来这一切都是可行的。是否有一种解决方案可以采用任何已知的Python编码并以UTF-8格

  • 问题内容: 我试图将iconv指向目录,并且无论当前编码如何,所有文件都将转换为UTF-8 我正在使用此脚本,但是您必须指定要使用的编码。如何使其自动检测当前编码? dir_iconv.sh 终端线 问题答案: 也许您正在寻找: Enca是一位非常幼稚的字符集分析器。它可以检测字符集和文本文件的编码,还可以使用内置转换器或外部库和工具(例如libiconv,librecode或cstocs)将其转

  • 我正在处理一个使用UTF-8编码了两次的遗留文件。例如,编码点()本应编码为,但改为编码为(是的UTF-8编码,是的UTF-8编码)。 假设数据在CP-1252中编码,则执行第二次编码。 为了回到UTF-8编码,我使用了以下(似乎错误)命令 我的问题是iconv似乎无法转换回一些字符。更准确地说,iconv无法转换UTF-8表示形式包含映射到CP-1252中控制字符的字符。一个例子是代码点ρ():

  • 嗨,我试图使我在UTF-8兼容的应用程序之一。我的环境如下:linux操作系统,apahce网络服务器作为超文本传输协议监听器,tomcat作为servlet引擎 配置了mod_jk和tomcat的apache s使用ajp连接器。 我已经从少数网站上阅读了UTF-8的基本指南,并根据建议尝试了以下方法 为服务器中的连接器设置和。xml 设置语言bashrc/. file使用 将apache服务器