一个诡异的问题: 看着相同的两个字符串equals不相等

在程序中,debug发现, 连个字符串是不一样的, 两个字符串对应的字符数组 如图:

发现 <0xa0>的区别,<0xa0>究竟是什么呢?

<0xa0> 是非断行空格(Non-breaking space, NBSP)的十六进制表示。在 HTML 中,它经常用作空格,但不会导致自动换行,这意味着它可以用来保持单词或文本元素在同一行内。这个字符在不同的上下文中由不同的方式产生:

  1. 用户输入:在某些文本编辑器或处理软件中,用户可能会不知不觉地输入非断行空格,尤其是在使用快捷键或特殊输入方法时。

  2. 编码转换:当文本从一种编码转换到另一种编码时,普通空格可能会被错误地转换为非断行空格。

  3. 复制粘贴:从网页、PDF文档或其他应用程序复制文本时,非断行空格可能会被一起复制,尤其是当原文本中使用了非断行空格来控制布局时。

  4. 程序生成:在编程时,程序可能会生成非断行空格,例如在生成 HTML 内容时,开发者可能会使用非断行空格来避免文本折行。

  5. 文本编辑器:一些文本编辑器在处理空格时可能会默认使用非断行空格,尤其是在处理宽度固定的空白字符时。

在 HTML 或其他编码的文本中,非断行空格可以有不同的表示方法:

  • HTML 实体:&nbsp; 或 &#160;
  • UTF-8 编码:\xC2\xA0
  • Unicode:\u00A0

如果你遇到了不期望的 <0xa0> 字符,并且希望将其移除或替换,你可以在文本处理时使用相应的方法来处理。在大多数编程语言中,都有相应的字符串处理函数可以实现这一点。例如,在 JavaScript 中,你可以使用 .replace(/\u00A0/g, ' ') 来将所有非断行空格替换为普通空格。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值