Java中FileWriter写入中文乱码
问题来源:
Java中FileWriter写入中文乱码通常是由于“系统向目标文件写入时所使用的编码与目标文件自身的编码不同”
解决办法:
首先,确保使用JDK11及以上
其次,在实例化FileWriter的时候,第二个参数使用指定的文件编码,如UTF-8
最后,成功运行。
示例代码:
package Java.WRTest;import java.io.FileWriter;//注意1import java.nio.charset.Charset;public class FileWriterTest { public static void main(String[] args) { FileWriter writer = null; try{ String file = "E:/CodeAll/Java/IOStreamTest/test.txt"; //注意2 writer = new FileWriter(file, Charset.forName("UTF-8")); writer.write("你好 世界!!"); }catch(Exception e) { e.printStackTrace(); } finally { try { if(writer != null) { writer.close(); } }catch(Exception e) { e.printStackTrace(); } } }}
代码解释:
在“注意2”中,我们通过FileWriter(String fileName, Charset charset)的构造方法指定了字符编码,以对应我们目标文件的编码(通常使用UTF-8)。
在“注意1”中,我们导入了Charset所需的类,使之正常使用。
拓展:
我们还可以通过如下代码以替换Charset.forName("UTF-8")使用,
//需要的包import java.nio.charset.StandardCharsets;//可替换StandardCharsets.UTF_8
在JDK11及以上中,可以通过构造方法指定编码格式了。
JDK20中FileWriter构造方法如图1所示, JDK11中FileWriter构造方法如图2所示, JDK8中FileWriter构造方法如图3所示。
图1
图2
图3
运行环境:
本机环境是运行于VsCode中,插件有如下:
如果在VsCode中使用新版JDK我们需要执行下述操作步骤:
1,文件-首选项-设置
2,输入javahome
3,找到下图所示位置
4,进入指定文件后键入我49行中的内容,目录替换为你的新JDK文件夹位置
5,保存并重启,检查是否正常使用
注:java.home已淘汰,现已替换为:java.jdt.ls.java.home
来源地址:https://blog.csdn.net/ax_CSDN/article/details/130912047
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341