存在对应的key却获取不到的原因有
-
如果是对象的话,记得查看对象hash方法是否满足自己业务,因为key是取对象hash值来进行存储的。
-
key的开始跟结束存在空格
-
key的开头为\uFEFF 字符,正常是看不出来的,debug模式看key字符串的value才能看出来 :
这个\uFEFF到底是个啥???叫做BOM。
BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码,但它对于文件的读者来说是不可见字符。
BOM定义:http://www.unicode.org/unicode/faq/utf_bom.html因为Unicode可以采用16位或者32位编码,所以计算机在处理时需要知道其字节顺序,BOM就是用来标识字节流的字节顺序的,但字节顺序这个 概念对UTF-8来说是没有意义的,所以BOM对UTF-8同样没有意义。但Unicode标准BOM在UTF-8编码格式中存在,其存在位置在文件开 头,以三个字节0xEF, 0xBB, 0xBF表示。
UTF-8编码不推荐使用无意义的BOM,但许多Windows程序却在保存UTF-8编码的文件时将其存为带BOM的格式(即在文件开头加上0xEFBBBF三个字节),这么干的就包括Windows记事本。
因此,在编辑UTF-8的文件时,建议不要使用记事本等进行编辑,虽然保存后的文件仍然是UTF-8,但却已经不再是保存前的UTF-8了。
解决方法:可以使用hutool封装的BOMInputStream来去除bom。