前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网址里面有个特殊字符-零宽度

网址里面有个特殊字符-零宽度

作者头像
叉叉敌
发布2020-04-23 15:00:19
1.3K0
发布2020-04-23 15:00:19
举报
文章被收录于专栏:ChasaysChasays

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

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

看上去是2001603,url编码是2%E2%80%8B001603/

在这里插入图片描述
在这里插入图片描述

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

代码语言:javascript
复制
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 编码,然后忽略掉错误就可以了。

代码语言:javascript
复制
str(path).split('/')[-1].encode('ascii', 'ignore')=='MAIN_HCP3_AU_ER_G55D_UNIT_DB_2001603'

其他

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

在这里插入图片描述
在这里插入图片描述

类似的还有

Unicode code point

character UTF-8

(hex.) name

U+2000

e2 80 80

EN QUAD

U+2001

e2 80 81

EM QUAD

U+2002

e2 80 82

EN SPACE

U+2003

e2 80 83

EM SPACE

U+2004

e2 80 84

THREE-PER-EM SPACE

U+2005

e2 80 85

FOUR-PER-EM SPACE

U+2006

e2 80 86

SIX-PER-EM SPACE

U+2007

e2 80 87

FIGURE SPACE

U+2008

e2 80 88

PUNCTUATION SPACE

U+2009

e2 80 89

THIN SPACE

U+200A

e2 80 8a

HAIR SPACE

U+200B

e2 80 8b

ZERO WIDTH SPACE

U+200C

e2 80 8c

ZERO WIDTH NON-JOINER

U+200D

e2 80 8d

ZERO WIDTH JOINER

U+200E ‎

e2 80 8e

LEFT-TO-RIGHT MARK

U+200F ‏

e2 80 8f

RIGHT-TO-LEFT MARK

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解决
  • 其他
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档