Java解决properties中中文乱码的问题

  • Properties文件介绍
    • 与Properties文件的前世今生
  • native2ascii.exe的使用
    • 首先编写配置文件
  • 实验
    • 修改测试代码进行更完整的测试

Properties文件介绍

properites文件是java项目中常用的配置文件,例如spring-boot中的application.properties. 它其实是一种以properites为后缀名的纯文本文件。它的配置特征以key=value为一行的形式作为一个配置项。

与Properties文件的前世今生

第一次接触到properties文件是,10年前,大学的时候老师讲java做国际化。应该目前java做国际级的标准形式也是采用properties文件实现的。这个时候明白properties文件中使用中文的内容是会出现乱码的。
这个时候接触到了java使用properties文件,是不可以直接配置中文内容的,java的在读取properties文件中的中文是会出现乱码。 这就是这篇文章的主题。
在当时老师介绍的方法就是需要使用jdk下面的native2ascii.exe将其中的非英文字符转换为unicode编码。
后来的工作中也多次使用到properties文件做为配置文件,也许大量的参数配置可能使用中文比较少,也有可能是使用的大量集成开发工具,例如,eclipse的PropertiesEditor帮我们解决了需要去中转换。让我渐渐的忘却掉了properties是不可以直接使用非英语字符的。
巧合,今天媳妇突然在spring中采用@Value注入的时候乱码如何解决。我第一反应就是懵逼。然后脑袋一闪,想起这个肯定跟properties中中文是如何解决乱码的,所以写下这篇文章给自己。绝对不好意思说技术分享,只是想回归一下当年没有如此强大的开发环境的古老的程序开发

native2ascii.exe的使用

其实看这名字native就只要是国际化相关的,难怪这么多年过去了,java项目的国际化还是乖乖的使用着properties

首先编写配置文件

  • 新建一个properties文件,例如:abc.properties
  • 采用key=value的形式在文本编辑器中编写配置项
    hello=你好
    geda=疙瘩
    
  • 使用命令native2ascii.exe 生成新的prooerties文件【abc.zh_cn.properties】---- 指定编码非常重要
    native2ascii.exe -encoding utf-8 abc.properties abc.zh_cn.properties
    
  • 该目录下会产生一个新的文件abc.zh_cn.properties
  • 查看内容,相应的非英语字符已经变成了unicode编码了。

实验

  • 编写简易实验类文件Message.java

    import java.util.Properties;
    import java.io.FileInputStream;public class Message{public static void main(String[] args) throws Exception{Properties pps = new Properties();pps.load(new FileInputStream("abc.properties"));String strValue = pps.getProperty("geda");System.out.println(strValue);}}
    
  • 为了测试简单,未做一些复杂的内容,涉及的文件也直接放到了 jdkbin目录下。文件目录如下:
  • 编译Message.java文件产生对应的字节码文件Message.class文件
    javac Message.java
    

  • 运行Message.class文件
    java Message
    
  • 测试结果:
    java Message
    
  • 结果内容:
  • 修改代码
    import java.util.Properties;
    import java.io.FileInputStream;public class Message{public static void main(String[] args) throws Exception{Properties pps = new Properties();pps.load(new FileInputStream(args[0])); # 将配置文件用参数传入String strValue = pps.getProperty("geda");System.out.println(strValue);}}
    
  • 重新编译Message.java
  • 重新采用使用了unicode编码的properties文件实验:
    java Message abc_zh_cn.properties
    
  • 运行结果

修改测试代码进行更完整的测试

  • 修改java代码

    import java.util.Properties;
    import java.io.FileInputStream;public class Message{public static void main(String[] args) throws Exception{Properties pps = new Properties();pps.load(new FileInputStream(args[0]));  # 配置文件从参数1中获取String strValue = pps.getProperty(args[1]); # 配置文件的key从参数2中获取System.out.println(strValue);}}
    
  • 重新编译Message.java
  • 负向测试
  • 测试输出的都是乱码
  • 正向测试
  • 测试结果不再是乱码

java解决properties中中文乱码问题相关推荐

  1. 解决plsql中中文乱码问题

    解决plsql中中文乱码问题 参考文章: (1)解决plsql中中文乱码问题 (2)https://www.cnblogs.com/heymonkey/p/12031742.html 备忘一下.

  2. 关于java.util.Properties读取中文乱码的正确解决方案(不要再用native2ascii.exe了)...

    从Spring框架流行后,几乎根本不用自己写解析配置文件的代码了, 但近日一个基础项目(实在是太基础,不能用硕大繁琐的Spring), 碰到了用java.util.Properties读取中文内容(U ...

  3. Java读取properties配置文件中文乱码解决方案--谷营中西科技软件园---zdd

    1,我们在使用properties配置文件的时候,如果配置文件中没有中文的话,使用的时候是完全没有问题的,但是如果配置文件中又中文的话,就可能会出现乱码的问题.我的配置文件编码是UTF-8的. 解决方 ...

  4. netbeans java中文_Ubuntu 下jdk安装中文字体 java 解决netbeans 方块字 中文乱码

    安装环境Ubuntu 11.04.java jdk1.6.0_27 首先找到你需要的字体,比如我就是从windows系统里拷出来的,C:\WINDOWS\Fonts这里有很多字体,我只拷贝了simsu ...

  5. Matlab解决脚本中中文乱码问题

    首先下载字体yahei consolas hybrid.百度网盘地址: 链接:https://pan.baidu.com/s/1Zv2FMt3uow7DZix2rtAbrA  提取码:am4d 然后将 ...

  6. java properties读取中文_Java读取properties文件中文乱码

    Java读取properties文件中文乱码 之前读取properties配置文件时候全都是英文或者数字之类的,最近项目有个需求要properties配置文件中有中文字符存在,那么读取java pro ...

  7. java改文字乱码快捷键,java.util.Properties读取中文内容(UTF-8格式)的配置文件,发生中文乱码...

    转自 http://blog.csdn.net/zhangzikui/article/details/7708827 碰到了用java.util.Properties读取中文内容(UTF-8格式)的配 ...

  8. linux下java程序乱码,解决linux下java程序(例如applet)中文乱码问题

    解决linux下java程序(例如applet)中文乱码问题 平台:Mandriva 2006.0 将Windows下的字体文件simsun.ttc拷贝到/usr/share/fonts/zh_CN, ...

  9. spring中@Value读取.properties配置文件中文乱码问题

    spring中读取.properties文件中文乱码原因是因为springmvc或spring配置文件加载配置文件时没有设定字符集编码问题导致的,其默认是会将.properties配置文件转码为uni ...

最新文章

  1. 数据库系统概论:第七章 数据库设计
  2. 洛谷P2068 统计和题解
  3. 网民关注iPhone、Google、微软和安全
  4. 阿里云 Serverless 再升级,从体验上拉开差距
  5. 使用Java迭代器修改数据时要小心
  6. python 英语词频统计软件_Python实现统计英文文章词频的方法分析
  7. 十大面试问题解惑,秒杀一切HR、技术面试。iOS程序员必读!
  8. redis和mysql双写一致_缓存与库双写一致,这种“老大难”怎么给它制服?
  9. Digilent提供的PmodOLEDrgb驱动程序
  10. QQ因系统日期无法打开
  11. leetcode之回文链表
  12. 越狱苹果抹掉数据怎么恢复cydia红字黄字闪退(淘宝30块买的)
  13. 什么是SPREADJS的脏数据?
  14. 华为HG8120C光猫换天邑TEWA-600AGM(百兆换千兆)的过程记录
  15. day048:LocalDateTime中增加、减少、直接修改时间的方法、计算时间间隔的方法
  16. 硬盘格式转换:MBR转换到GPT怎么转?
  17. 读Java 804 - Quick refresher
  18. mixly for linux64,Mixly编程for Linux
  19. 【太美了】【Crystal Castle.水晶城堡】【严泽远作品】
  20. 安卓讲课笔记3.4 网格布局

热门文章

  1. Android 监听屏幕解锁事件
  2. Android AndroidStudio查看debug key与release key
  3. 拧线成绳 众志成城——中国网络安全产业联盟
  4. Nothing Ventured, Nothing Gained
  5. 【pytorch 优化器】ReduceLROnPlateau详解
  6. 基于51单片机的温度检测
  7. SQL语句你会写了吗?一题教你轻松对付数据库期末考试(写SQL语句的分必拿哦)
  8. 苏州科达谈2010年安防监控系统发展趋势
  9. Cutting Bamboos 主席树+二分 牛客
  10. 8-6-3 统计专业人数 (15 分)