【发布时间】:2011-11-23 18:21:02
【问题描述】:
我在json_encode() 的原生 PHP 5 实现中遇到了一个有趣的行为。显然,当将对象序列化为 json 字符串时,编码器将清除所有包含“弯”引号的字符串属性,这种类型可能会在启用自动转换的情况下从 MS Word 文档中复制粘贴出来。
这是函数的预期行为吗?我能做些什么来强迫这些类型的角色转换为他们的基本等价物?我已经检查了返回数据的数据库和插入数据的管理页面之间的字符编码不匹配,并且一切都设置正确 - 编码器似乎只是因为这些字符而拒绝了这些值。有没有其他人遇到过这种行为?
编辑:
澄清一下;
MSWord 将采用标准引号和撇号并将它们转换为更美观的“花式”或“卷曲”引号。当这些字符放置在其编辑界面(在 html 中)和数据库编码之间的字符集不匹配的内容管理器中时,可能会导致问题。
不过,这不是问题所在。例如,我有一个 json_object 代表一个人的个人资料和字符串:
Jim O’Shea
那个撇号的 UTF 代码是 \u2019
从数据库中取出并直接json_encoded时,json对象中会出现null。
{"model_name":"Bio","logged":true,"BioID":"17","Name":null,"Body":"Profile stuff!","Image":"","Timestamp":"2011-09-23 11:15:24","CategoryID":"1"}
【问题讨论】:
-
你能举个具体的例子吗?
-
我不确定您所说的“将任何包含'大括号'的字符串属性归零”是什么意思。但是,我测试了
json_decode()字符串'{"{a}":"{b,c,d}"}',它按预期工作。 -
@Jack curly 引号,不是大括号。
-
嗯...什么是“弯引号”?
-
@Jack Maney:MS Word 智能引号