读取 properties 配置文件含有中文的value内容 导致中文乱码 的解决办法
1.前言
因为装系统的时候把中文写在了系统路径,现在我想把这个路径写在properties里面来读取,可是
发现java 读取会导致中文乱码成 问号????的乱码 ,百度找了好多博客,基本都是一摸一样的抄袭,估计能不能用都不知道就复制上去了,
没良心的帖子。
2.追击原因
查找原因,是因为Java以二进制流的方式读取properties ,导致无法识别中文,
网上有两种的解决思路:
方法一是读取的时候以 文件读取方式 new InputStreamReade 来读取并设定编码格式 , 就像这样,

,经测试,失败,中文仍然是问号来替代。
方法二是 在properties配置文件里,不直接写中文,而是以其他编码格式替代 ,可以使用 native2ascii.exe 来将配置文件转换 。
缺点:可是这有可能影响开发的效率,在中文数据比较少的的时候,没必要这样杀鸡用牛刀 ,不然每次测试都需要将整个文件重新编码再替代,太慢了!!!!
3.我的解决方式
知道原理,解决起来就有思路了,既然这样,那我每次将有中文的数据都装成unicode编码再放入properties文件里面,像这样

,再需要的地方再将Unicode编码转成utf-8即可

我集成了个工具【点击查看】
1 package cn.cen2guo.clinic.util;
2
3 public class Unicode {
4 /**
5 * 字符串转unicode, 【properties文件专用】
6 */
7 public static String stringToUnicode(String str) {
8 StringBuilder sb = new StringBuilder();
9 char[] c = str.toCharArray();
10 for (char value : c) {
11 sb.append("\\").append("\\u").append(Integer.toHexString(value));
12 }
13 return sb.toString();
14 }
15
16 /**
17 * 字符串转unicode, 【java 正常使用】
18 */
19 public static String stringToUnicode2(String str) {
20 StringBuilder sb = new StringBuilder();
21 char[] c = str.toCharArray();
22 for (char value : c) {
23 sb.append("\\u").append(Integer.toHexString(value));
24 }
25 return sb.toString();
26 }
27
28 /**
29 * unicode转字符串
30 */
31 public static String unicodeToString(String unicode) {
32 StringBuilder sb = new StringBuilder();
33 String[] hex = unicode.split("\\\\u");
34 for (int i = 1; i < hex.length; i++) {
35 int index = Integer.parseInt(hex[i], 16);
36 sb.append((char) index);
37 }
38 return sb.toString();
39 }
40
41 }
Unicode.class
怎么使用呢?看测试
4.测试


5.注意
之所以有 properties文件专用 的方法,是因为properties文件里 符号 \ 必须要被另一个 \ 注解才可以视为字符串 ,为了方便
将编码好的数据直接放到properties 文件里 ,才这样做 ,不然得手动加 。
properties 取出数据后 前面得 \ 会自动去掉得 ,因此 正常 将unicode 转 utf-8 即可。
读取 properties 配置文件含有中文的value内容 导致中文乱码 的解决办法的更多相关文章
- properties配置文件在idea中默认utf-8编码可能会乱码的解决
使用idea集成开发环境时,有时在properties配置文件有中文,在线上拿到的时乱码,如何解决? 这样设置: 最后说一下,setting设置是对当前项目的,想要所有的项目都有相同的设置,需要在 中 ...
- gVim 中文内容显示为乱码的解决办法
http://blog.csdn.net/sunmanzth/article/details/6143600打开vimrc文件,在vim的安装目录下可以找到该文件,或在windows下是在vim/gv ...
- 关于JAVA中URL传递中文参数,取值是乱码的解决办法
前几天看到有网友在问URLDecoder和URLEncoder方面的使用问题,突然想起,原来我刚遇到这两个类时,也觉得很神密,由此可以想想初学者的心情,于是便有了今天的这篇文章. 其实,这两个类的使用 ...
- Springboot 之 解决IDEA读取properties配置文件的中文乱码问题
问题描述 当在.properties的配置文件中有中文时,读取出来的总是乱码.比如我的application.properties配置文件的内容如下: server.port=9090 test.ms ...
- 读取.properties配置文件
方法1 public class SSOUtils { protected static String URL_LOGIN = "/uas/service/api/login/info&q ...
- Java 读取 .properties 配置文件
java 开发中,经常要读取 properties 配置文件,下面介绍几种读取方式: 1.基于 InputStream 读取配置文件 该方式的优点在于可以读取任意路径下的配置文件 Properties ...
- java读取properties配置文件总结
java读取properties配置文件总结 在日常项目开发和学习中,我们不免会经常用到.propeties配置文件,例如数据库c3p0连接池的配置等.而我们经常读取配置文件的方法有以下两种: (1) ...
- Java读取Properties配置文件
1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,使用键值对的形式来保存属性集.不过Properties的键和值都是字符串 ...
- Java 读取 .properties 配置文件的几种方式
Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 DOM 或 SAX 方式解析,而读取 properties 配 ...
随机推荐
- 【Python】文本包jieba使用
看了一个教程:https://www.cnblogs.com/wkfvawl/p/9487165.html 有些不懂的地方自己查阅了一下 键值的添加,获得文件中相同字符出现的次数, counts = ...
- 【MySQL】查询不在表中的数据
1.方法一(仅适用单个字段):使用 not in ,比较容易理解,缺点是效率低 如:select A.ID from A where A.ID not in (select ID from B): 2 ...
- 自定义日历(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 日历有三种:标准日历.24小时日历和夜班日历. 但这三种在现实中远远不够用,别的不说,就说那个标准日历,默认是8点到12点 ...
- live2d
原文来自https://www.fghrsh.net/post/123.html Live2D 看板娘 v1.4 / Demo 3 - 内置 waifu-tips.json (博客园等网站引用推荐) ...
- 洛谷八月月赛 II T1 题解
Content 在大小为 \(n\) 的数字三角形中,第 \(i\) 行包含有 \(i\) 个数字,数字从上到下,从左到右依次排列为 \(1,2,3,\dots\). 设第 \(i\) 行第 \(j\ ...
- java 多线程: Thread 锁ReentrantLock 常用方法
注意 reentrantLock 和 同步代码块儿一样,同一个时刻只能一个线程获取锁,也就是共用锁的代码块部分,线程是顺序执行的 ReentrantLock 常用方法 getHoldCount获取当前 ...
- java 输入输出IO 转换流-字符编码
编码和其产生的问题: 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字.英文.标点符号.汉字等字符是二进制数转换之后的结果. 按照某种规则,将字符存储到计算机中,称为编码 .反之,将存 ...
- ELK 使用filebeat替代Logstash收集日志
使用beats采集日志 之前也介绍过beats是ELK体系中新增的一个工具,它属于一个轻量的日志采集器,以上我们使用的日志采集工具是logstash,但是logstash占用的资源比较大,没有beat ...
- py常用标准库
functools python3中增加了更多工具函数,做业务开发时大多情况下用不到,记录一个比较常用的,给函数或者对象初始化参数 partial函数(偏函数) 把一个函数的某些参数设置默认值,返回一 ...
- Java 将PDF转为线性PDF
线性化PDF文件是PDF文件的一种特殊格式,可以通过Internet更快地进行查看.线性化的PDF,在页面数量很多的情况下,更能突出表现出快速浏览的优势.下面是通过后端Java程序实现将PDF文件转为 ...