读取 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 配 ...
随机推荐
- B树和B+树原理图文解析
B树与B+树不同的地方在于插入是从底向上进行(当然查找与二叉树相同,都是从上往下) 二者都通常用于数据库和操作系统的文件系统中,非关系型数据库索引如mongoDB用的B树,大部分关系型数据库索引使用的 ...
- Redis集群到集群迁移
目录 一.物理导入 简介 实际操作 一.物理导入 简介 redis集群在存储数据时,是根据槽点进行存储.例如老集群A如下: 都在一台机器,实际可以在多台机器上. 主节点:7000(0-5460) 70 ...
- HTML界面监控键盘回车Enter按下并绑定动作
本示例绑定键盘回车键(Enter),触发发送WebSocket消息动作 <script type="text/javascript"> //监控键盘Enter 回车键按 ...
- MyBatis中比较(大于、小于)符号的转义写法
< < <= <= > > >= >= & & ' ' " & ...
- IDEA通过git回滚到某个提交节点或某个版本
1.项目右键后,点击"Git - Show History" 这里会显示有历史提交的版本记录(这里我们假设要回滚到 "提交" 版本中) 2.选中 "提 ...
- vue-组件化编程
1.传统编写方式和组件编写方式的区别 组件方式编写可以很方便的复用和封装某些功能模块/组件的命名最好语义化,方便维护和阅读 编写时,我们可以将某些共用的功能或者样式部分抽象,得到对应的组件,按需要引入 ...
- 【九度OJ】题目1076:N的阶乘 解题报告
[九度OJ]题目1076:N的阶乘 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1076 题目描述: 输入一个正整数N,输 ...
- 【LeetCode】127. Word Ladder 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/word-lad ...
- 【LeetCode】835. Image Overlap 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- [源码解析] PyTorch 分布式之弹性训练(4)---Rendezvous 架构和逻辑
[源码解析] PyTorch 分布式之弹性训练(4)---Rendezvous 架构和逻辑 目录 [源码解析] PyTorch 分布式之弹性训练(4)---Rendezvous 架构和逻辑 0x00 ...