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内容 导致中文乱码 的解决办法的更多相关文章

  1. properties配置文件在idea中默认utf-8编码可能会乱码的解决

    使用idea集成开发环境时,有时在properties配置文件有中文,在线上拿到的时乱码,如何解决? 这样设置: 最后说一下,setting设置是对当前项目的,想要所有的项目都有相同的设置,需要在 中 ...

  2. gVim 中文内容显示为乱码的解决办法

    http://blog.csdn.net/sunmanzth/article/details/6143600打开vimrc文件,在vim的安装目录下可以找到该文件,或在windows下是在vim/gv ...

  3. 关于JAVA中URL传递中文参数,取值是乱码的解决办法

    前几天看到有网友在问URLDecoder和URLEncoder方面的使用问题,突然想起,原来我刚遇到这两个类时,也觉得很神密,由此可以想想初学者的心情,于是便有了今天的这篇文章. 其实,这两个类的使用 ...

  4. Springboot 之 解决IDEA读取properties配置文件的中文乱码问题

    问题描述 当在.properties的配置文件中有中文时,读取出来的总是乱码.比如我的application.properties配置文件的内容如下: server.port=9090 test.ms ...

  5. 读取.properties配置文件

    方法1 public  class SSOUtils { protected static String URL_LOGIN = "/uas/service/api/login/info&q ...

  6. Java 读取 .properties 配置文件

    java 开发中,经常要读取 properties 配置文件,下面介绍几种读取方式: 1.基于 InputStream 读取配置文件 该方式的优点在于可以读取任意路径下的配置文件 Properties ...

  7. java读取properties配置文件总结

    java读取properties配置文件总结 在日常项目开发和学习中,我们不免会经常用到.propeties配置文件,例如数据库c3p0连接池的配置等.而我们经常读取配置文件的方法有以下两种: (1) ...

  8. Java读取Properties配置文件

    1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,使用键值对的形式来保存属性集.不过Properties的键和值都是字符串 ...

  9. Java 读取 .properties 配置文件的几种方式

    Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 DOM 或 SAX 方式解析,而读取 properties 配 ...

随机推荐

  1. B树和B+树原理图文解析

    B树与B+树不同的地方在于插入是从底向上进行(当然查找与二叉树相同,都是从上往下) 二者都通常用于数据库和操作系统的文件系统中,非关系型数据库索引如mongoDB用的B树,大部分关系型数据库索引使用的 ...

  2. Redis集群到集群迁移

    目录 一.物理导入 简介 实际操作 一.物理导入 简介 redis集群在存储数据时,是根据槽点进行存储.例如老集群A如下: 都在一台机器,实际可以在多台机器上. 主节点:7000(0-5460) 70 ...

  3. HTML界面监控键盘回车Enter按下并绑定动作

    本示例绑定键盘回车键(Enter),触发发送WebSocket消息动作 <script type="text/javascript"> //监控键盘Enter 回车键按 ...

  4. MyBatis中比较(大于、小于)符号的转义写法

    <     < <=   <= >    > >=   >= &     & '     &apos; "     & ...

  5. IDEA通过git回滚到某个提交节点或某个版本

    1.项目右键后,点击"Git - Show History" 这里会显示有历史提交的版本记录(这里我们假设要回滚到 "提交" 版本中) 2.选中 "提 ...

  6. vue-组件化编程

    1.传统编写方式和组件编写方式的区别 组件方式编写可以很方便的复用和封装某些功能模块/组件的命名最好语义化,方便维护和阅读 编写时,我们可以将某些共用的功能或者样式部分抽象,得到对应的组件,按需要引入 ...

  7. 【九度OJ】题目1076:N的阶乘 解题报告

    [九度OJ]题目1076:N的阶乘 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1076 题目描述: 输入一个正整数N,输 ...

  8. 【LeetCode】127. Word Ladder 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/word-lad ...

  9. 【LeetCode】835. Image Overlap 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  10. [源码解析] PyTorch 分布式之弹性训练(4)---Rendezvous 架构和逻辑

    [源码解析] PyTorch 分布式之弹性训练(4)---Rendezvous 架构和逻辑 目录 [源码解析] PyTorch 分布式之弹性训练(4)---Rendezvous 架构和逻辑 0x00 ...