奇怪的UTF8字符串比较

2023-11-24

我在 UTF8 字符串比较方面遇到了这个问题,我真的不知道,它开始让我头疼。请帮帮我。
基本上我有一个来自 UTF8 编码的 xml 文档的字符串:“Mina Tidigare anställningar”
当我将该字符串与我自己输入的完全相同的字符串进行比较时:“Mina Tidigare anställningar”(也是 UTF8)。结果是假的!!!
我不知道为什么。太奇怪了。有人可以帮我吗?


这似乎有些相关。为简化起见,有多种方法可以获取 Unicode(因此也是 UTF8)格式的相同文本:例如:ř可以写成一个字符ř或作为两个字符:r结合 ˇ.

你最好的选择是规范化类- 将两个字符串标准化为相同的标准化形式并比较结果。

在其中一条注释中,您显示了字符串的这些十六进制表示形式:

4d696e61205469646967617265 20   616e7374 c3a4   6c6c6e696e676172  // from XML
4d696e61205469646967617265 c2a0 616e7374 61cc88 6c6c6e696e676172 // typed
        ^^-----------------^^^^1         ^^^^^^2

请注意我标记的部分,显然这个问题有两个部分。

  • 首先,观察这个问题关于字节序列“c2a0”的含义- 由于某种原因,您的输入被转换为不可破坏的空格,而 XML 文件具有正常的空格。请注意,在这两种情况下,“Mina”后面都有一个正常的空格。不知道该怎么办that在 PHP 中,除了用普通空格替换所有空格之外。

  • 至于第二种情况,就是我上面概述的情况:c3a4 is ä(U+00E4“带有分音符号的拉丁文小写字母 A”- 一个字符,两个字节),而61 is a(U+0061“拉丁文小写字母 A”- 一个字符,一个字节)和cc88将是组合元音变音"(U+0308“组合分音”- 两个字符,三个字节)。在这里,标准化库应该有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

奇怪的UTF8字符串比较 的相关文章

  • 自定义 XML 文件比较

    我看过很多关于 XML 比较的帖子 但我看过的没有一个能解决我的问题 我们有一些 XML 格式的文本文档 产品描述 带有标题和段落 正在更新 即版本化 我的任务是制作变更摘要 也就是说 我们想要获取两个连续的文件并生成第三个 标题结构 大纲
  • 执行 Boyer-Moore 模式匹配时是否必须考虑编码?

    我即将实现 Boyer Moore 模式匹配算法的变体 具体来说是星期日算法 我问自己 我的字母表大小是多少 它是否取决于编码 可能的字符数 或者我可以假设我的字母表由 256 个符号组成 一个字节可以表示的符号数 在许多其他情况下 将字符
  • JAXB 不会解组接口列表

    看来 JAXB 无法读取它所写的内容 考虑以下代码 interface IFoo void jump XmlRootElement class Bar implements IFoo XmlElement public String y p
  • Facebook iFrame 应用程序 - 摆脱垂直滚动条?

    我已经转换了一个 Facebook 应用程序 http apps facebook com video preferans 从 FBML 到 iFrame 使用 PHP SDK 现在显示的垂直滚动条与我之前显示的内容数量相同 一个徽标 一个
  • 如何从脚本中创建新的 Joomla 用户帐户?

    我们正在为 Joomla 创建一个 XML API 允许合作伙伴网站在我们的网站上为其用户创建新帐户 我们已经创建了一个独立的 PHP 脚本来处理和验证 API 请求 但现在我们需要实际创建新帐户 我们最初只想进行 CURL 调用来提交注册
  • 如何从 JavaScript 中的字符串中删除空白字符?

    如何从 JavaScript 中的字符串中删除空白字符 修剪很容易 但我不知道如何将它们从inside字符串 例如 222 334 gt 222334 您可以使用正则表达式 如下所示来替换所有空格 var oldString 222 334
  • 从 php 到 JavaScript 的数组

    我正在尝试使用 json 将数组列表从 php 传输到 javascript 但它不起作用 JS ajax url getProfilePhotos php type post post or get method data if you
  • 将IP保存到数据库中

    当用户登录时 我想将他们的 IP 保存在数据库中 我该怎么做呢 MySQL 字段最适合使用哪种类型 获取IP的PHP代码是什么样的 我正在考虑将其用作登录 会话内容的额外安全功能 我正在考虑使用用户现在拥有的 IP 检查用户从数据库登录的
  • yii2 中的自动完成

    在 Yii2 中 我希望当用户开始输入时 我的输入字段之一能够自动完成 下面是我的代码 它使用Jui Autocomplete 这是行不通的 当我打印我的数组时 我就像 Array 1 gt abc 2 gt xyz 4 gt pqr
  • PHP-docker容器中的环境变量

    我想在我的 docker 容器中显示一个环境变量 PHP 脚本如下所示 我使用 OpenShift 来启动容器 PHP 容器显示 env is 现在我更改容器的 dc 配置 oc env dc envar USER Pieter deplo
  • 如何在CentOS 5.3上安装php-mongodb?

    我已经在我的 VPS 上安装了 mongoDB 效果很好 现在我想安装 php 驱动程序以使 php 与 mongoDB 一起工作 我跟着蒙戈安装 http www php net manual en mongo installation
  • json_encode 返回 NULL?

    由于某种原因 项目 描述 返回NULL使用以下代码 这是我的数据库的架构 CREATE TABLE staff id int 11 NOT NULL AUTO INCREMENT name longtext COLL
  • 付款成功后保存到数据库(paypal)

    我试图找出在客户使用 paypal 支付商品费用后将数据 之前以表单提交 保存到数据库的最佳方法 沿着这个过程的一些事情 1 在实际网站上填写表格 gt 2 登录 Paypal gt 3 立即付款 PayPal gt 4 数据已插入数据库
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • Paypal 将钱从一个帐户转移到另一个帐户

    我知道这个建议如何汇款至任何 PayPal 账户 https stackoverflow com questions 1559808 paypal api send money to any paypal account但到目前为止我所尝试
  • Text::平衡和多行 xml

    看来我有点失落了 我需要解析一个大的 大约 100 mb 且相当难看的 xml 文件 如果我使用parsefile 它返回错误 文档元素后的垃圾 但它会很乐意解析文件的较小元素 所以我决定将文件分解为元素并解析它们 由于不鼓励使用正则表达式
  • 扩展构建器中的“映射到现有表”显示 TYPO3 中的奇怪问题

    在我的扩展中MyExt 我映射了模型Page to pagesTYPO3 中的表 首先它向我展示了type mismatch错误 无论如何我继续保存它 会发生以下情况 我的页面树变成这样 我的新记录表单仅显示 UID 而不显示标题 My P
  • 设置大型电子邮件通知系统有哪些方法?

    我的公司有一个用 PHP 构建的网站 我们使用内置的 PHP 电子邮件功能每天向订阅者发送数千封电子邮件 这是一个糟糕的主意 它堵塞了我们的服务器 并且需要几个小时才能完成整个批次 现在我已经研究过像 MailChimp 这样的群发邮件服务
  • if/else 简写来定义变量

    我很难理解 if else 的 php 简写是如何描述的here https stackoverflow com questions 20233207 php if shorthand and echo in one line possib
  • PHP条件,如果当前页面,则链接突出显示[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个带

随机推荐

  • Html.HiddenFor 是做什么的?

    虽然我已经阅读了 Html HiddenFor 的文档 但我还没有掌握它的用途 有人可以解释它的用途并举一个简短的例子吗 这些助手应该放在代码中的哪里 它在表单上为您传递的字段 来自模型 创建隐藏输入 对于模型 视图模型中需要保留在页面上并
  • VSTS 中 Android 应用程序的 Gradle 构建在内存不足后失败

    我在 VSTS 中有一个 gradle 构建 正在构建 Android 应用程序 但它失败并出现以下错误 构建机器真的只有很少的内存吗 还是我应该更改一些设置gradle properties 例如这org gradle jvmargs设置
  • WebBrowser DocumentCompleted 事件多次触发

    我一直在研究这个东西 每个人似乎都同意解决方案是检查ReadyState直到设置为 完成 但实际上该事件有时会被触发ReadyState多次设置为 完成 我认为对于那个蹩脚的 NET WebBrowser 没有解决方案 但如果我使用底层 D
  • Java 中抛出异常

    我有一个关于在 Java 中抛出异常的问题 这似乎是我这边的一种误解 我想自己澄清一下 我一直在读到处理异常代码的两种基本方法是 1 在 try 块中使用 throw new 抛出异常 并立即在 catch 块中捕获它 所谓的 try th
  • 所有者绘制的进度条中的动画“发光”(ListView/DataGridView)

    我注意到 NET 2 0 Winforms 中的沼泽标准 ProgressBar 在 Vista 中确实显示为精美的动画发光条 但是 使用 ProgressBarRenderer 通常在尝试在所有者绘制的列表视图 网格视图或其他此类控件中绘
  • ChartJS 折线图 - 多条线,在工具提示上显示一个值

    我正在尝试制作一个图表 该图表必须显示每个客户的帐户变动 我正在尝试做什么 我有树线 第一行 最低余 额 如果客户的余额低于最低余额 余额 他的余额将从他的银行帐户自动加载 第二行 当前余额 第三行 最大余额 如果客户的余额超过最大余额 他
  • 想要使用 VBScript 运行不同文件夹中的 .bat 文件

    我正在尝试使用 VBScript 运行 bat 文件 当在与 bat 相同的文件夹中执行时 我可以让 VBScript 工作 但是 我不知道如何使其在文件夹外成功运行 Dim shell Set shell CreateObject WSc
  • Python 中 C _PyTime_t 的值

    长时间睡觉时 比如跑步time sleep 3 3 3 在 Python 3 中 程序返回 OverflowError 并显示错误消息 时间戳太大 无法转换为 C PyTime t 我最多可以睡多久 该值应为 9223372036 8547
  • 是否可以读取.net中的.eml文件

    我想知道是否可以解析 dot net 中的 eml 和 msg 文件 最好来自内存流 以便我可以在 ASP Net 页面上使用它们 EML MIME 消息 在大多数情况下 EML 是带有邮件消息的 MIME 编码文件 EML 文件的常见来源
  • 如果 web.xml 中有两个与请求匹配的 servlet 映射,会发生什么情况?

    如果 web xml 中有两个与请求匹配的 servlet 映射 会发生什么情况 它选择最具体的吗 例如 如果我有以下 xml 并且请求到达 something 而它转到 someservlet 或 everything else serv
  • 在 Android 的列表视图中滑动时显示删除按钮

    扩展另一个 Stackoverflow 问题 我实现了一些手势检测代码 以便我可以检测列表视图 位于 FrameLayout 中 中的行何时被滑动 我在这里关注了达米安关于如何从适配器获取单个行 视图的问题 答案 如何获取列表视图中行的位置
  • imaplib2 :imap.gmail.com 处理程序 BYE 响应:系统错误

    我正在更新一个 python 脚本 该脚本检查 IMAP 是否有新电子邮件 并在有新电子邮件时发送推送通知 问题是每隔几个小时我就会崩溃一次 起初我不太明白发生了什么 但后来我发现M debug 4这给了我一个很好的输出 但我仍然不明白是什
  • 用于最小化其他应用程序的批处理文件

    我怎样才能有一个打开应用程序的bat文件 让我们称之为firefox exe 我如何调用bat文件或任何其他脚本 即vbs 来最小化应用程序 即firefox exe 然后在一两分钟后关闭它 请注意start min不起作用 下面是我的脚本
  • 如何在 Vaadin 8 中添加验证器?

    在 Vaadin 7 中有一个 addValidator 函数 但在 Vaadin 8 中它不存在 Vaadin 7 示例 TextField user new TextField User user setRequired true us
  • 使用 THREE.OBJLoader 渲染 OBJ 文件

    如何使用 THREE OBJLoader 方法渲染 OBJ 文件 我有一个示例 OBJ 格式 但它不会渲染任何内容 也不会在 chrome 开发工具中看到错误 查看 OBJLoader 使用示例 https github com mrdoo
  • 在 ncurses 中实现文本滚动的推荐方法是什么?

    我正在尝试实现一个 ncurses 应用程序 其文本滚动效果如下 推荐的方法是什么 这是我所知道的 您可以使用scroll将文本缓冲区向上或向下移动 1 行 但是 如果向下滚动 您最终会在顶部出现一个空行 如果向上滚动 则会在底部出现一个空
  • C++ 将十六进制字符串转换为有符号整数

    我想在 C 中将十六进制字符串转换为 32 位有符号整数 例如 我有十六进制字符串 fffefffe 其二进制表示形式为 11111111111111101111111111111110 其有符号整数表示形式为 65538 我如何在 C 中
  • 如何将 groupby() 和 value_counts() 转换为多个饼图/条形图

    假设我有一个数据框 并且正在查看其中的 2 列 2 个系列 使用其中一列 no employees 下面 有人可以帮我弄清楚如何创建 6 个不同的饼图或条形图 每个 no employees 分组 1 个 来说明处理列中 是 否 值的值计数
  • C++程序需要文件关联

    我正在分发一个免费软件产品 该产品可以读取和写入具有唯一扩展名的文本文件 我希望双击这样的文件会自动启动该应用程序 在 Windows 7 Professional 上进行开发时 我设置了一个关联 以便在双击时打开文件 方法是右键单击文件
  • 奇怪的UTF8字符串比较

    我在 UTF8 字符串比较方面遇到了这个问题 我真的不知道 它开始让我头疼 请帮帮我 基本上我有一个来自 UTF8 编码的 xml 文档的字符串 Mina Tidigare anst llningar 当我将该字符串与我自己输入的完全相同的