php – 奇怪的UTF8字符串比较
我有UTF8字符串比较这个问题,我真的不知道,它开始让我头痛.请帮帮我.
基本上我有一个用UTF8编码的xml文档中的字符串:’MinaTidigareanst?llningar’ 当我将该字符串与我自己键入的完全相同的字符串进行比较时:’MinaTidigareanst?llningar'(也在UTF8中).结果是假! 我不知道为什么.太奇怪了.有人可以帮我吗? 解决方法
This seems somewhat relevant.为简化起见,有几种方法可以在Unicode(因此是UTF8)中获取相同的文本:例如,这个:?可以写成一个字符或两个字符:r和组合.
你最好的选择是normalizer class – 将两个字符串规范化为相同的标准化形式并比较结果. 在其中一条注释中,您将显示字符串的这些十六进制表示: 4d696e61205469646967617265 20 616e7374 c3a4 6c6c6e696e676172 // from XML 4d696e61205469646967617265 c2a0 616e7374 61cc88 6c6c6e696e676172 // typed ^^-----------------^^^^1 ^^^^^^2 注意我标记的部分,显然这个问题有两个部分. >首先,观察this question on the meaning of byte sequence “c2a0” – 由于某种原因,您的输入被转换为XML文件具有正常空间的不可破坏空间.请注意,在“Mina”之后的两种情况下都有正常的空间.不知道如何在PHP中做什么,除了用普通空格替换所有空格. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |