繁体   English   中英

用PHP解码Java的JSON Unicode值

[英]Decoding Java's JSON Unicode values with PHP

根据过去使用的语言,同一字符串我经历了不同的JSON编码值。 由于这些API在封闭环境中使用(不允许第三方),因此我们做出了妥协,并且所有Java应用程序都在手动编码Unicode字符。 LinkedIn的API返回的“损坏”值与我们的Java应用程序基本相同。 我已经在他们的论坛上发布了一个问题 ,我在这里提问的原因也很简单; 共享很重要:)因此,这个问题与LinkedIn有着部分联系,但主要是试图找到以下所述的一般编码问题的答案。

如您所见,我的姓氏包含一个字母ž ,该字母应为但是Java(或LinkedIn的API)返回JSON的 ,而没有XML响应。 PHP的json_decode()忽略它,我的姓氏变成Kurida。

经过调查,我发现ž显然具有两个表示形式9e17e 这到底是怎么回事? 有解决这个问题的方法吗?

U + 009E是通常不可见的控制字符,不是ž的可接受替代表示。

字节 0x9E表示Windows代码页1252中的字符ž 。如果使用ISO-8859-1解码,则该字节将变为U + 009E。

(造成混淆的事实是,如果您在HTML页面中编写ž ,浏览器实际上并没有像您预期的那样为您提供字符U + 009E,而是将其转换为U + 017E。这是事实。所有字符参考0080–009F中的字符:更改它们的方式就好像数字引用的是cp1252字节而不是Unicode字符一样,这​​完全是奇怪且错误的行为,但是所有主要的浏览器都这样做,所以我们现在仍然坚持使用。在适当的XHTML中用作XML,因为它必须遵循更明智的XML规则。)

在论坛页面上,JSON读取显然没有错:您的名字被注册为“ David Kurid [U + 009E] a”。 但是,这些数据已进入他们的系统需求中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM