gpt4 book ai didi

php - XML 中的项目符号 "•"

转载 作者:行者123 更新时间:2023-12-05 08:59:15 24 4
gpt4 key购买 nike

类似于这个question我正在使用其中包含一些非法字符的 XML 产品。我严重怀疑我能否让他们解决问题,但我会尝试。与此同时,我想要一个解决方法。

问题是它包含一颗子弹。它在我的来源中呈现为“?”。我尝试了一些编码转换,但没有找到有效的组合。 (我什至不习惯考虑我的编码类型,所以我不在这里。)所以,我尝试了下面的内容,似乎 str_replace 无法识别“•”。 (它在我的文本编辑器中呈现为高 block )你可以看到我尝试了一些不同的事情的注释行。

我先尝试用 str 替换“•”,然后进行调整,这是我最新的:

// deal with bullets in XML.
$bullet="•"; //this was copied and pasted from transliterated text.
//$data=iconv( "UTF-8", "windows-1252//TRANSLIT", $data ); //transliterate the text:
//$data=str_replace($bullet,'•',$data); // replace the bullet char
$data=str_replace($bullet,' - ',$data); // replace the bullet char
//$data=iconv( "windows-1252", "UTF-8", $data ); // return the text to utf-8 encoding.

关于如何去除或替换这个字符有什么想法吗?如果有预清理 XML 的功能,那就太好了,我就不用担心了。

最佳答案

根据定义,XML 没有非法字符。如果某个字符串包含不属于 XML 的字符,则该字符串根据定义不是 XML。

您关注的字符是 Unicode 的一部分。由于 XML 基于 Unicode,这是个好消息。因此,让我们说出您的目标:

所以你现在说它呈现为 。因为 U+2022 在 UTF-8 中编码为 0xE2 0x80 0xA2,所以可以或多或少安全地假设您采用 UTF-8 编码字符串(顺便说一句,这是 XML 中使用的默认编码)但是命令软件渲染它以将其视为某种单字节编码,从而将单个代码点转换为三个不同的字符:

相反,您需要命令渲染应用程序使用 UTF-8 编码。那应该立即解决您的问题。所以找到你引入错误编码的地方,你很可能不需要重新编码它,只是为了正确提示编码。

如果您想知道哪些单字节字符编码在相应字节 (0xE2 0x80 0xA2) 处具有这三个 Unicode 字符,这里有一个列表。我突出显示了其中最受欢迎的一个:

  • ISO-8859-15(拉丁语 9)
  • OEM 858(多语言拉丁语 I + 欧元)
  • Windows 1252(拉丁语 I)
  • Windows 1254(土耳其语)
  • Windows 1256(阿拉伯语)
  • Windows 1258(越南)

关于php - XML 中的项目符号 "•",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16020488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com