zoukankan      html  css  js  c++  java
  • Redis中存字段key出现 xef xbb xbf

    环境:

    java向redis中存数据用于重复判断,结果有一条记录居然去不了重复,用Redis DeskTop Manager 查看发现,有一个 key 中居然是这样的:

    20190324157:xEFxBBxBF55103521621:500181463

    也就是比正常的数据多了 xEFxBBxBF

    然后在java控制台打印日志,居然看不出区别,也就是控制台居然都是正常的  20190324157:55103521621:500181463

    度娘得知:xEFxBBxBF  是utf-8编码中特有的 BOM 隐藏字符,那么就想到办法如下:

    //            假设s为可能带有BOM前缀 xEFxBBxBF 的字符串
                String s = "55103521621"; 
                System.out.println(s);
    //            首先把s转成GBK编码,这时会出现多余乱码字符 20190324157:?55103521621:50018146
                String s1 = new String(s.getBytes("utf-8"),"GBK");
                System.out.println(s1); //锘�55103521621
    //            这时再去除多余字符即可,这里是替换所有非数字字符为空串
                String s2 = s1.replaceAll("\D", "");//55103521621
                System.out.println(s2);//55103521621

    参考文章如下:

    ======

    Redis xef xbb xbf 这是什么意思?

    redis 中存了一个英文单词,但是存进去时加入了这东西:

    xef xbb xbf

    怎么会是?

    参考:

    http://baike.baidu.com/subview/126558/5073180.htm#viewPageContent

    =====

    但是读取的时候第一个元素为‘xefxbbxbf1883’,上网看了一些资料,原来在python的file对象的readline以及readlines程序中,针对一些UTF-8编码的文件,开头会加入BOM来表明编码方式。 
    解决方法有很多种: 
    1.这篇博客引用codecs模块,来判断前三个字节是否为BOM_UTF8。如果是,则剔除xefxbbxbf字节。 
    2.另外还有很多解决方案,可以判断列表中是否有xefxbbxbf字符,如果有,用replace()替换为空的,代码如下:

      1.  
      2.  
      3. f = open("2017-5-17-1.txt","r")
      4. lightSen = []
      5.  
      6. for line in f.readlines():
      7. if 'xefxbbxbf' in line:
      8. str1 = line.replace('xefxbbxbf','')#用replace替换掉'xefxbbxbf'
      9. lightSen.append(int(str1.strip()))#strip()去掉
      10. else:
      11. lightSen.append(int(line.strip()))
      12.  
      13.  
      14. print(lightSen)
      15.  
      16. f.close
         
  • 相关阅读:
    Codeforces Round #368 Div. 2
    TXT文件去除多余空行
    #4247. 串
    #4322. 字符串游戏(strgame)
    #4214. 谢特
    #4155. 咱们去烧菜吧
    #4350. 「十二省联考 2019」字符串问题
    #4349. 「十二省联考 2019」异或粽子
    #4303. 跳蚤
    #4302. 魔法咒语
  • 原文地址:https://www.cnblogs.com/libin6505/p/10819828.html
Copyright © 2011-2022 走看看