【发布时间】:2018-06-22 12:37:58
【问题描述】:
一个持续了一年多的问题,虽然我已经纠正了但已经演变成一个怪物。
我使用 PHP 系统上生成的 XML 在站点之间移动大量数据。主要是文本,我遇到了一些破坏传输的基本 XML 项,因此我使用了所有 XML 值的这段代码。
$value=str_replace("'","'",$value);
print '<'.$key.'>';
print htmlspecialchars($value, ENT_XML1 | ENT_QUOTES, 'UTF-8');
print '</'.$key.'>';
$key 是字段,这对所有数据都非常有效,除了包含重音的任何数据,例如 piñata。带有 ñ 字符的值显示为完全为空。
我还没有找到一个函数来清理用 PHP 格式化 XML 的文本。我目前将数据库中的数据转储为这种格式,然后在接收端加载到 SIMpleXML 以加载回数据库。
通过清理所有数据或可能的 json 编码而不是 XML 的解决方案可能会很棒。
谢谢-克里斯
【问题讨论】:
-
如果它的服务器到服务器,为什么不base64url编码键/值,我个人会使用RPC来做这种事情。
-
Base64 编码/解码显示奇怪的结果 $value = 'ñ';打印$值; $value = base64_encode($value);打印 base64_decode($value);前 2 行自己打印正确的 ñ ,在编码解码后我得到 2 个字符 сс
-
base64url 编码上面的注意事项,如果你使用像
这样的键不起作用,base64url 编码会阻止非安全字符。 3v4l.org/LehjA,在我的测试中,虽然我无法将 ñ变成cc,所以我不确定那里发生了什么。 -
我相信我的 base64 问题与我的第一个问题的根本原因相同。输入的编码不是UTF-8。我没有尝试编码然后更改为 base64。
标签: php xml utf-8 accent-sensitive