java properties文件转义字符和中文乱码解决
properties文件的分隔符是 =或者 :
第一次出现的就是分割符,第二次出现的也不需要转义,也即是(忽略掉[],只是着重描述字符)
[\=] [\:] 或者 [=] [:] 原封不动即可,但是如果有转义字符 [\] 则需要转义 [\\]代替
另外需要注意下,英文空格也需要转义也即[ ]前面添加[\]即为[\ ]【注意,如果是value中间的和最后的空格不需要转义,只是value开头的需要否则会自动被截断,换行在最后加\符号
,\必须是最后一个字符这样才能连接下一行,而且\连接的下一行的开头的空白符也是会被截断的】
对于value内的=:,/#;$*~-!%^&<>?这些符号都是不需要转义的;
有些博客认为这是Properties解析问题,又自行实现个解析,实在是很无所谓
以下为代码案例:
test.properties里的值
a=1=1==36:2:3
b=2:2:2==3=5
c=\3
d=\\4
e= 5
f=\ 6
以下为测试类
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class PropertiesTest {
public static void main(String[] args) throws IOException {
Properties properties=new Properties();
properties.load(PropertiesTest.class.getResourceAsStream("test.properties"));
Iterator<Map.Entry<Object,Object>> it=properties.entrySet().iterator();
Map.Entry<Object,Object> entry=null;
while(it.hasNext()){
entry=it.next();
System.out.println("key:"+entry.getKey()+"___value:"+entry.getValue());
}
}
}
最终打印结果:
key:b___value:2:2:2==3=5
key:a___value:1=1==36:2:3
key:f___value: 6
key:e___value:5
key:d___value:\4
key:c___value:3
很明显,我们看到
e对应的空格因为没有转义就不见了
f对应的空格有转义得以保留
d对应的\有转义\\得以保留
a b等根本第二个及以后的:或=不影响解析
此外,properties里如果有中文,读取的时候需要转换,否则显示为乱码,文件本身为UTF-8
String companyName= new String(properties.getProperty("company").getBytes("ISO-8859-1"), "UTF-8");
这样就可以读取中文
转自:https://blog.csdn.net/a1091662876/article/details/73550969,有部分完善
java properties文件转义字符和中文乱码解决的更多相关文章
- spring使用@Value注解读取.properties文件时出现中文乱码问题的解决
解决办法 在spring中我们常常使用.properties对一些属性进行一个提前配置, spring 在读取*.properties文件时, 默认使用的是asci码, 这时 我们需要对其编码进行转换 ...
- Linux中文件/文本的中文乱码解决方法
Linux显示在Windows编辑过的中文就会显示乱码是由于两个操作系统使用的编码不同所致.Linux下使用的编码是utf8,而Windows使用的是gb18030.因此,解决Linux打开txt/c ...
- Java读取properties配置文件时,中文乱码解决方法
public static String getConfig(String key) { Properties pros = new Properties(); String value = &quo ...
- JAVA编程心得-Eclipse/MyEclipse 中文乱码解决办法
将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclipse编码格式不同.总结网上的建议和自己的体会 ...
- eclipse中.properties文件不能输入中文的解决办法
打开Eclipse-Window-Preferences,选择General->Content Types,然后修改右面的Text下的Java Properites File的默认编码方式为UT ...
- ResourceBundle (读取properties文件及中文乱码解决方法)
原文:http://blog.csdn.net/joecheungdishuiya/article/details/6304993 public class test { static Resourc ...
- java中文乱码解决之道(七)-----JSP页面编码过程
我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...
- eclipse下properties配置文件中文乱码解决
properties文件常带有中文注释,eclipse显示是乱码. 安装插件(properties editor)可以解决properties配置文件乱码的问题. 菜单 : Help->Ecli ...
- java中文乱码解决之道(七)—–JSP页面编码过程
我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...
随机推荐
- P3719 [AHOI2017初中组]rexp——递归模拟
P3719 [AHOI2017初中组]rexp 没有什么算法的题做起来真不适应,这道题深深讽刺了我想用栈维护匹配括号个数的想法: 递归解决就行了: 时刻注意函数返回值是什么,边界条件是什么: #inc ...
- pipres生成当前项目所有的依赖文件
对于使用虚拟环境的Python程序,直接pip freeze即可.但是对于没有使用虚拟环境,再使用pip freeze就不行了,因为它会把系统所有的包都导出. 所以使用第三方库pipreqs 安装 p ...
- arcgis python 异常处理
import arcpy in_features = "c:/base/transport.gdb/roads" try: # Note: CopyFeatures will al ...
- 在使用PhpSpreadsheet出现空行导入的问题
在使用PhpSpreadsheet出现空行导入的问题,项目一直报错,原来是读取excel后会多读取几行,或者说读取的行数有错误.因此必须加一个,去除空行.暂时没有研究源码可能源码里面有这样的功能. ...
- 网络流中 InputStream.available() = 0 问题探究
在处理文件输入流时,通过调用available()方法来获取还有多少字节可以读取,根据该数值创建固定大小的byte数组,从而读取输入流的信息. FileInputStream fi = new Fil ...
- C/C++/Linux编程经典电子书pdf下载
实际上目前Linux下C开发一般都是C++实现下的C,而不是最纯粹的C,使用g++而不是gcc编译,所以直接学习C++的过程性C部分是更加高效的. C++ Primer(中文版 第5版)C++学习头牌 ...
- android ------ 实现高德定位并获取相应信息 ( 最新版高德SDK 和 Android SDK版本)
Android开发项目时常常会遇到定位这个功能, 很久以前写过一篇了,官方也更新了一些东西,我也更新下 以前使用的是jar包 导入来实现高德定位 老版本 链接:https://www.cnblogs. ...
- Kotlin数据类型 Unit、Nothing与Nothing?、Any与Any?
Kotlin数据类型 Unit.Nothing与Nothing?.Any与Any? 本文链接:https://blog.csdn.net/ldxlz224/article/details/9440 ...
- ISO/IEC 9899:2011 条款6.8.6——跳转语句
6.8.6 跳转语句 语法 1.jump-statement: goto identifier ; continue ; break ; return expressio ...
- 一、搭建简单的axis web服务
转: 一.搭建简单的axis web服务 1.在官方网站下载axis的工程(这个等下就有用的)和源码.jar包等,下载地址是: http://labs.renren.com/apache-mirror ...