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. 【Matlab】xticks/xticklabels的用法

    先说一下我自己的理解,这东西就是把原来的有的标签位置换成自己的标签名称,一般都是要手动设置看物理意义. https://ww2.mathworks.cn/help/matlab/ref/xticks. ...

  2. 《手把手教你》系列技巧篇(五十一)-java+ selenium自动化测试-字符串操作-下篇(详解教程)

    1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...

  3. apt和apt-get的区别

    目录 一.简介 二.apt vs apt-get 为什么apt首先被引入? apt和apt-get之间的区别 apt和apt-get命令之间的区别 我应该使用apt还是apt-get? 三.结论 一. ...

  4. hooks中,useEffect无限调用问题产生的原因

    前言:我在我的另一篇博客中有说道useEffect监听对象或者数组时会导致useEffect无限执行,并给予了解决方案-useEffect无限调用问题 .后来我想从其产生根源去理解并解决这个问题. 原 ...

  5. 20个ios登陆界面

    原文:http://favbulous.com/post/1001/24-unique-ios-login-screen-showcase Eeve Evernote Food Recood Hips ...

  6. 小迪安全 Web安全 基础入门 - 第十天 - 信息打点-APP&小程序篇&抓包封包&XP框架&反编译&资产提取

    一.本节知识点思维导图 二.APP-外在资产收集 1.将APP安装在模拟器中,修改模拟器代理设置,使用Fiddler.Burpsuite.Charles等抓包工具抓取APP访问的http协议数据包,抓 ...

  7. 误入 GitHub 游戏区,意外地收获颇丰

    这天中午,我和往常一样就着美食视频吃完午饭,然后起身泡了一杯"高沫". 我闻着茶香享受着午后的阳光,慵懒地坐在工位上习惯性的打开 GitHub 游荡,酝酿着睡意. 误打误撞,我来到 ...

  8. CF808A Lucky Year 题解

    Content 年份中有不超过 \(1\) 个非 \(0\) 数字的年份是幸运年份.现给出当前年份 \(n\),求到下一个幸运年份还要等多久. 数据范围:\(1\leqslant n\leqslant ...

  9. SP1798 ASSIST - Assistance Required 题解

    Content 有一个足够长的数列 \(a\),是一个首项为 \(2\),公差为 \(1\) 的等差递增数列.另有一个初始为空的数列 \(b\). 重复进行如下操作: 假设当前数列 \(a\) 第一项 ...

  10. TURN协议初识及turnserver实践

    WebRTC协议栈 图一 WebRTC stack TURN的全称为Traversal Using Relays around NAT,是STUN/RFC5389的一个拓展,主要添加了Relay功能. ...