问题来源: Java中FileWriter写入中文乱码通常是由于“系统向目标文件写入时所使用的编码与目标文件自身的编码不同” 解决办法: 首先,确保使用jdk11及以上 其次,
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中使用新版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
--结束END--
本文标题: Java中FileWriter写入中文乱码
本文链接: https://www.lsjlt.com/news/403086.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0