Java中properties文件中的中文乱码问题

这篇具有很好参考价值的文章主要介绍了Java中properties文件中的中文乱码问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题代码:
 1 // 目标:使用Properties读取属性文件中的内容。
 2         // 1、创建properties对象
 3         Properties properties = new Properties();
 4  5 
 6         // 2、使用properties对象加载属性文件中的键值对数据。
 7         properties.load(new FileInputStream("day10-special-file-log\\src\\users.properties"));
 8 
 9         // 3、确认是否读取出来了
10         System.out.println(properties);
11 
12         // 4、根据键取值
13         String pwd = properties.getProperty("admin");
14         System.out.println(pwd);
15 
16         properties.forEach((k , v) -> {
17             System.out.println(k + "=" + v);
18         } );

 

day10-special-file-log\\src\\users.properties文件里面的内容如下:

Java中properties文件中的中文乱码问题

 期望输出应该和上面文件的内容一样,结果中文内容输出的是一堆乱码: 1 张无忌=minmin 2 周芷若=miejue 3 赵敏=wuji 4 admin=123456 

可如果将上面  properties.load(new FileInputStream("day10-special-file-log\\src\\users.properties"));换成 properties.load(new FileReader("day10-special-file-log\\src\\users.properties"));就能正常输出中文了,那这是什么原因呢?

其实properties文件中的中文乱码问题主要有以下几个原因:

1.properties文件的编码格式和Java代码的编码格式不一致。properties文件默认使用ISO-8859-1编码,而Java代码可能使用UTF-8或GBK等编码。这样在读取或写入properties文件时,就会出现中文字符无法正确解析的情况。

2.properties文件中的中文字符没有经过转换。properties文件只能存储ASCII字符,所以如果要使用中文字符,就需要将其转换为Unicode编码。可以使用native2ascii.exe工具或者IDE的插件来实现这个转换。

3.在Java代码中指定字符集。在使用FileInputStream或FileWriter等类来读取或写入properties文件时,需要指定相应的字符集,例如UTF-8。可以使用InputStreamReader或OutputStreamWriter等类来包装FileInputStream或FileWriter,并传入相应的字符集参数。

 

而properties.load(new FileReader(file))能正常读取的原因是,FileReader默认使用了与properties文件相同的字符编码,即UTF-8。这样就可以正确地解析文件中的中文字符,而不会出现乱码。

可以使用InputStreamReader或OutputStreamWriter等类来包装FileInputStream或FileWriter,并传入相应的字符集参数

示例代码:

// 读取文件时指定UTF-8编码
Properties p = new Properties();
p.load(new InputStreamReader(new FileInputStream("config.properties"), "UTF-8"));

// 写入文件时指定UTF-8编码
Properties p = new Properties();
p.setProperty("name", "李芳");
p.store(new OutputStreamWriter(new FileOutputStream("config.properties"), "UTF-8"), null);

 文章来源地址https://www.toymoban.com/news/detail-623627.html

到了这里,关于Java中properties文件中的中文乱码问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java下载文件,中文文件名乱码问题解决(文件名包含很多%)

    一般情况下,大家都是这样: 其实乱码就是乱在;filename=\\\" + fileName这里,对文件名的编码设定上。 使用URLEncoder.encode(filepath,\\\"UTF-8\\\")虽然可以解决在提示下载框中正确显示汉字文件名的问题,并且在选择保存,然后打开的情况下,文件名称也可以正确的显示。 但是在提示下载框

    2024年02月12日
    浏览(51)
  • Java【代码 16】将word、excel文件转换为pdf格式和将pdf文档转换为image格式工具类分享(Gitee源码)aspose转换中文乱码问题处理

    感谢小伙伴儿的分享: ● 不羁 ● 郭中天 整合调整后的工具类Gitee地址:https://gitee.com/yuanzhengme/java_application_aspose_demo ● WordToPdfUtil用于将word文档转换为pdf格式的工具类 ● ExcelToPdfUtil用于将excel文档转换为pdf格式的工具类 ● PdfToImageUtil用于将pdf文档转换为image格式的工具类

    2024年01月24日
    浏览(86)
  • 关于git推送代码到github远程仓库中文乱码问题,visual studio保存文件默认编码格式问题

    中文乱码问题本质上的原因是:二者的编码格式不同 。当你用GB2313格式保存一个文件,用utf-8的格式打开,它必然就显示乱码。 据我所知,github上面是utf-8,而visual studio默认保存为GB2312,把代码推送到github上面看,中文部分就是乱码。 用 高级保存选项 来设置保存操作的编码

    2024年04月11日
    浏览(63)
  • idea properties配置文件中的中文显示为unicode转中文显示

    一、前言 如图所示,有时候我们项目里的properties配置文件中的中文显示为unicode编码格式如下图所示,无法查看其真正意思。有的人会找unicode转换工具查看,这样很麻烦,有一个好办法。 二、步骤 1、通过Settings显示成中文的,方法:File-Settings,在Settings搜索框上搜索File E

    2024年02月11日
    浏览(39)
  • 解决打开 json 文件中文乱码的问题

      如下图,pycharm 打开是下面的样子 右下角的编码尝试了好久,依然打不开 用代码打开就成功了  控制台结果:

    2024年01月19日
    浏览(48)
  • idea 自定义配置文件,中文乱码问题

    语言:Java 项目:基于Spring框架开发的项目 工具:IntelliJ IDEA 20182021 在项目中 自定义的配置文件 (如:xx.config xx.conf xx.pro等)的中文注释,打开看到的中文注释为乱码。如图: 快速解决问题,跳过这里,直接看解决方案 1、项目编码或idea编码有问题? 2、截图中 u7f16u7801

    2024年02月15日
    浏览(44)
  • 完全解决FTP上传文件名称中文乱码问题

    今天项目上加了个定时扫描本地文件路径下所有文件实现自动上传至ftp文件服务器的功能,经测试发现一旦上传中文名称的文件就会乱码或者文件上传不了。初步排查就是FTP服务器字符编码的问题。在网上查了很多资料都没有效果。在这里讲一下我踩过的坑,以及分享我能上

    2024年02月13日
    浏览(56)
  • 解决DBeaver打开csv文件中文乱码问题

    ①将excel文件进行另存为,保存类型选择【CSV UTF-8】 ②之后在DBeaver进行数据导入,选择【导入数据——选择csv文件——将编码类型手动改为UTF-8】 ③选择下一步,若【表映射——预览数据】中没有出现乱码。大概率会导入成功。 ④若导入完成后,只展示了表结构而没有具体

    2024年01月18日
    浏览(58)
  • MultipartFile上传至服务器,文件名称中文乱码问题

    1.首先查看服务器是否设置为了zh_CN.UTF-8 输入命令:locale  不是则,进行查看服务器上是否有zh_CN.UTF-8 查看所有可以使用的字符编码集 输入命令:locale -a  如果没有可用的zh_CN.UTF-8 则进行安装: CentOS命令:yum install kde-l10n-Chinese -y  ubuntu命令:sudo apt-get install language-pack-zh-ha

    2024年02月10日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包