zoukankan      html  css  js  c++  java
  • 网址里面有个特殊字符-零宽度

    网址里面有个特殊字符%E2%80%8B

    所见不一定是所得.
    今天终于活久见, 看上去是一样的, 但是实际就是不一样还差一个字符。
    那看见下面一个图片,下面一个图片,嗯是返回的一串字符串,我要判断它们相等,肉眼看上去是完全相等的,但是实际上,它们是不相等的,所以在判断相等的时候始终返回嗯 False

    看上去是2001603,url编码是2%E2%80%8B001603/
    在这里插入图片描述

    到底是什么原因造成的?我把获取到的字符串,通过 ascii 码编码之后。明显的看到有一个错误发生。在 2这个数字后面。

    str(path).split('/')[-1].encode('ascii')=='MAIN_HCP3_AU_ER_G55D_UNIT_DB_2001603'
    

    发现在2这个数字后面,他有一个编码,Unicode编码是 u200b 。通过查询Unicode?可以知道这是一个0宽度的字符串。如果他表现出来就是没有宽度的,肉眼是看不见的。

    {UnicodeEncodeError}‘ascii’ codec can’t encode character u’u200b’ in position 30: ordinal not in range(128)

    解决

    遇到这种问题怎么去解决?通过python,用python的方法encode去编码,用 assci 编码,然后忽略掉错误就可以了。

    str(path).split('/')[-1].encode('ascii', 'ignore')=='MAIN_HCP3_AU_ER_G55D_UNIT_DB_2001603'
    

    其他

    那是其他的类似0宽度字符串还有如下几种方式。如果遇到同样的问题,还是用这个方法就可以解决

    在这里插入图片描述
    类似的还有

    Unicode code pointcharacter UTF-8(hex.) name
    U+2000e2 80 80EN QUAD
    U+2001e2 80 81EM QUAD
    U+2002e2 80 82EN SPACE
    U+2003e2 80 83EM SPACE
    U+2004e2 80 84THREE-PER-EM SPACE
    U+2005e2 80 85FOUR-PER-EM SPACE
    U+2006e2 80 86SIX-PER-EM SPACE
    U+2007e2 80 87FIGURE SPACE
    U+2008e2 80 88PUNCTUATION SPACE
    U+2009e2 80 89THIN SPACE
    U+200Ae2 80 8aHAIR SPACE
    U+200Be2 80 8bZERO WIDTH SPACE
    U+200Ce2 80 8cZERO WIDTH NON-JOINER
    U+200De2 80 8dZERO WIDTH JOINER
    U+200E ‎e2 80 8eLEFT-TO-RIGHT MARK
    U+200F ‏e2 80 8fRIGHT-TO-LEFT MARK

    https://www.utf8-chartable.de/unicode-utf8-table.pl?start=8192&number=128


    作者:叉叉敌
    博客:https://chasays.github.io/
    微信公众号:Chasays, 欢迎关注一起吹牛逼,也可以加个人微信号「xxd_0225」互吹。
    本博客大多为学习笔记或读书笔记,本文如对您有帮助,还请多推荐下此文,如有错误欢迎指正,相互学习,共同进步。

  • 相关阅读:
    JDBC——java连接操作数据库的步骤
    JVM——编译和运行
    base——运算符的用法
    JVM——类的初始化【转】
    JVM——类加载机制
    base——gc方法与finalize方法的区别
    JVM——垃圾回收机制&&jvm内存分配机制
    JVM——虚拟机的简介【摘录】
    2019-06-12_java.lang.RuntimeException: Serialized class com.taotao.common.pojo.SearchItem must implement java.io.Serializable
    2019-06-12_Python-Break语句
  • 原文地址:https://www.cnblogs.com/ievjai/p/14382637.html
Copyright © 2011-2022 走看看