奇怪的 unicode 崩溃
Strange unicode crash
我的一个 Rails 应用程序从一个 ATT 号码收到了四条短信,每条短信的开头是(按顺序):
\u0005\u0000\u0003?\u0004\u0001 Message 1...
\u0005\u0000\u0003?\u0004\u0002 Message 2...
\u0005\u0000\u0003?\u0004\u0003 Message 3...
\u0005\u0000\u0003?\u0004\u0004 Message 4...
应用程序每次都崩溃并出现错误 "string contains null byte"。
它们似乎无法解码为我认识的任何 unicode。有人以前看过这个吗?
快速谷歌搜索("SMS header," 也许是一个幸运的猜测)显示这是一个 SMS 用户数据 Header (UDH);特别是描述 "Concatenated SMS" (CSMS) 的消息,即被拆分为多条消息的长消息。维基百科有一个很好的概述:https://en.wikipedia.org/wiki/Concatenated_SMS那里描述的八位字节与您所看到的完全匹配:
05
:用户数据的长度Header,在本例中为 5.
00
:信息元素标识符; 00
是串联 SMS 的标识符。
03
:header不包括前两个字段的长度(我认为这是多个header可以一个接一个地使用,在这种情况下第一个八位字节将是所有 header 的总长度)。
3F
:CSMS标识符,即所有消息部分共享的ID。 (Ruby 将其显示为 ?
因为 0+003F 恰好是问号的 UTF-8 代码点。)
04
:零件总数。
00-FF
: 这部分在序列中的编号。
我推荐阅读维基百科文章;它很容易理解,而且我确定我把一些事情简单化了。
利用此 header 将 CSMS 部件重新组合在一起将是一个有趣的问题。不过,令我感到惊讶的是,无论您使用什么 API 都不会为您做到这一点。
我的一个 Rails 应用程序从一个 ATT 号码收到了四条短信,每条短信的开头是(按顺序):
\u0005\u0000\u0003?\u0004\u0001 Message 1...
\u0005\u0000\u0003?\u0004\u0002 Message 2...
\u0005\u0000\u0003?\u0004\u0003 Message 3...
\u0005\u0000\u0003?\u0004\u0004 Message 4...
应用程序每次都崩溃并出现错误 "string contains null byte"。
它们似乎无法解码为我认识的任何 unicode。有人以前看过这个吗?
快速谷歌搜索("SMS header," 也许是一个幸运的猜测)显示这是一个 SMS 用户数据 Header (UDH);特别是描述 "Concatenated SMS" (CSMS) 的消息,即被拆分为多条消息的长消息。维基百科有一个很好的概述:https://en.wikipedia.org/wiki/Concatenated_SMS那里描述的八位字节与您所看到的完全匹配:
05
:用户数据的长度Header,在本例中为 5.00
:信息元素标识符;00
是串联 SMS 的标识符。03
:header不包括前两个字段的长度(我认为这是多个header可以一个接一个地使用,在这种情况下第一个八位字节将是所有 header 的总长度)。3F
:CSMS标识符,即所有消息部分共享的ID。 (Ruby 将其显示为?
因为 0+003F 恰好是问号的 UTF-8 代码点。)04
:零件总数。00-FF
: 这部分在序列中的编号。
我推荐阅读维基百科文章;它很容易理解,而且我确定我把一些事情简单化了。
利用此 header 将 CSMS 部件重新组合在一起将是一个有趣的问题。不过,令我感到惊讶的是,无论您使用什么 API 都不会为您做到这一点。