【发布时间】:2015-09-04 23:35:23
【问题描述】:
对需要进行什么解析以及在客户端/服务器端进行什么感到困惑。
When i send an Umlaut 'Ö' to my ejabberd,
it is received by ejabberd as <<"195, 150">>
在此之后,我将其作为推送通知(通过 GCM/APNS 静默)发送给我的客户。从那里开始,客户端通过 UTF-8 解码对每个数字一个一个进行构建(这是错误的)。
i.e. 195 is first decoded to gibberish character � and so on.
如果要处理两个字节或三个或更多字节,则此重建需要识别。 这因字母的语言而异(此处为德语)。
客户端如何识别它要重构的语言(一次解码的字节数)?
要添加更多,
lists:flatten(mochijson2:encode({struct,[{registration_ids,[Reg_id]},{data ,[{message,Message},{type,Type},{enum,ENUM},{groupid,Groupid},{groupname,Groupname},{sender,Sender_list},{receiver,Content_list}]},{time_to_live,2419200}]})).
生成的 json 为:
"{\"registration_ids\":[\"APA91bGLjnkhqZlqFEp7mTo9p1vu9s92_A0UIzlUHnhl4xdFTaZ_0HpD5SISB4jNRPi2D7_c8D_mbhUT_k-T2Bo_i_G3Jt1kIqbgQKrFwB3gp1jeGatrOMsfG4gAJSEkClZFFIJEEyow\"],\"data\":{\"message\":[104,105],\"type\":[71,82,79,85,80],\"enum\":2001,\"groupid\":[71,73,68],\"groupname\":[71,114,111,117,112,78,97,109,101],\"sender\":[49,64,100,101,118,108,97,98,47,115,100,115],\"receiver\":[97,115,97,115]},\"time_to_live\":2419200}"
我给了“hi”作为消息,而 mochijson 给了我 ASCII 值 [104,105]。
The groupname field was given the value "Groupname",
the ASCIIs are also correct after json creation i.e. 71,114,111,117,112,78,97,109,101
但是当我使用http://www.unit-conversion.info/texttools/ascii/
It is decodes as Ǎo��me and not "Groupname".
那么,谁来做解析呢?应该如何处理。
当 ASCII 被重构时,我重构的消息都是胡言乱语。
谢谢
【问题讨论】:
-
这和解析无关。可能您的 json 编码不正确。
-
@Mickaël 我按照这里所说的 mochijson 编码进行了操作:tiliman.wordpress.com/2013/01/02/… 我猜这个问题可能是其他问题。你认为我的 erlang 模块应该传递什么 {data ,[{message,Message} ?我正在向 GCM 服务器发送 ASCII。
-
我遇到了一些 json 库的问题。尝试使用另一个或另一个版本以确保。
-
你能给我推荐 mochijson 和 mochijson2 的替代品吗?还有你用的什么?
-
你也尝试过 mochijson 吗?我认为对于某些东西我使用 mochijson 和其他一些 mochijson2。
标签: android erlang xmpp apple-push-notifications ejabberd