java解决properties中中文乱码问题
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);}}
- 为了测试简单,未做一些复杂的内容,涉及的文件也直接放到了
jdk
的bin
目录下。文件目录如下:
- 编译
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中中文乱码问题相关推荐
- 解决plsql中中文乱码问题
解决plsql中中文乱码问题 参考文章: (1)解决plsql中中文乱码问题 (2)https://www.cnblogs.com/heymonkey/p/12031742.html 备忘一下.
- 关于java.util.Properties读取中文乱码的正确解决方案(不要再用native2ascii.exe了)...
从Spring框架流行后,几乎根本不用自己写解析配置文件的代码了, 但近日一个基础项目(实在是太基础,不能用硕大繁琐的Spring), 碰到了用java.util.Properties读取中文内容(U ...
- Java读取properties配置文件中文乱码解决方案--谷营中西科技软件园---zdd
1,我们在使用properties配置文件的时候,如果配置文件中没有中文的话,使用的时候是完全没有问题的,但是如果配置文件中又中文的话,就可能会出现乱码的问题.我的配置文件编码是UTF-8的. 解决方 ...
- netbeans java中文_Ubuntu 下jdk安装中文字体 java 解决netbeans 方块字 中文乱码
安装环境Ubuntu 11.04.java jdk1.6.0_27 首先找到你需要的字体,比如我就是从windows系统里拷出来的,C:\WINDOWS\Fonts这里有很多字体,我只拷贝了simsu ...
- Matlab解决脚本中中文乱码问题
首先下载字体yahei consolas hybrid.百度网盘地址: 链接:https://pan.baidu.com/s/1Zv2FMt3uow7DZix2rtAbrA 提取码:am4d 然后将 ...
- java properties读取中文_Java读取properties文件中文乱码
Java读取properties文件中文乱码 之前读取properties配置文件时候全都是英文或者数字之类的,最近项目有个需求要properties配置文件中有中文字符存在,那么读取java pro ...
- java改文字乱码快捷键,java.util.Properties读取中文内容(UTF-8格式)的配置文件,发生中文乱码...
转自 http://blog.csdn.net/zhangzikui/article/details/7708827 碰到了用java.util.Properties读取中文内容(UTF-8格式)的配 ...
- linux下java程序乱码,解决linux下java程序(例如applet)中文乱码问题
解决linux下java程序(例如applet)中文乱码问题 平台:Mandriva 2006.0 将Windows下的字体文件simsun.ttc拷贝到/usr/share/fonts/zh_CN, ...
- spring中@Value读取.properties配置文件中文乱码问题
spring中读取.properties文件中文乱码原因是因为springmvc或spring配置文件加载配置文件时没有设定字符集编码问题导致的,其默认是会将.properties配置文件转码为uni ...
最新文章
- 数据库系统概论:第七章 数据库设计
- 洛谷P2068 统计和题解
- 网民关注iPhone、Google、微软和安全
- 阿里云 Serverless 再升级,从体验上拉开差距
- 使用Java迭代器修改数据时要小心
- python 英语词频统计软件_Python实现统计英文文章词频的方法分析
- 十大面试问题解惑,秒杀一切HR、技术面试。iOS程序员必读!
- redis和mysql双写一致_缓存与库双写一致,这种“老大难”怎么给它制服?
- Digilent提供的PmodOLEDrgb驱动程序
- QQ因系统日期无法打开
- leetcode之回文链表
- 越狱苹果抹掉数据怎么恢复cydia红字黄字闪退(淘宝30块买的)
- 什么是SPREADJS的脏数据?
- 华为HG8120C光猫换天邑TEWA-600AGM(百兆换千兆)的过程记录
- day048:LocalDateTime中增加、减少、直接修改时间的方法、计算时间间隔的方法
- 硬盘格式转换:MBR转换到GPT怎么转?
- 读Java 804 - Quick refresher
- mixly for linux64,Mixly编程for Linux
- 【太美了】【Crystal Castle.水晶城堡】【严泽远作品】
- 安卓讲课笔记3.4 网格布局