310.2. 数据编码、字母和国际字符集


数据编码和字母顺序可根据每个消息指定。可以为端点指定默认值。务必要了解这些选项之间的关系,以及设置多个值时组件的作用方式。

数据编码是 SMPP wire 格式的 8 位字段。

alphabet 对应于数据编码字段的位 0-3。对于某些类型的消息,当使用消息类(通过设置数据编码字段的位 5)时,数据编码字段的低两位不会被解释为 alphabet,仅位 2 和 3 影响 alphabet。

此外,当前 JSMPP 库的版本仅用于支持位 2 和 3,假设位 0 和 1 用于消息类。这就是为什么 JSMPP 中的 Alphabet 类不支持值 3 (二进制 0011,表示 ISO-8859-1)。

虽然 JSMPP 提供消息类参数的表示,但 Camel 组件目前不提供在 data coding 字段中手动设置对应位的方法。

在传出消息中设置 data coding 字段时,Camel 组件会考虑以下值,并使用它找到的第一个值:

  • 在标头中指定的数据编码
  • 在标头中指定的 alphabet
  • 端点配置中指定的数据编码(URI 参数)

较旧版本的 Camel 在支持国际字符集时存在错误。这个功能只在为所有消息使用单个编码时才可以正常工作,当用户想要根据消息更改它时,很难这样做。需要此功能才能工作的用户应确保其 Camel 版本包含针对的修复

JIRA issues Macro: com.atlassian.sal.api.net.ResponseStatusException: Unexpected response received.状态代码: 404

.

除了试图向 SMSC 发送数据编码值外,Camel 组件还会尝试分析消息正文,将其转换为 Java String (Unicode),并将其转换为对应 alphabet when 中的一个字节数组中的字节数组,决定在字节数组中使用哪个 alphabet 时,Camel SMPP 组件不会考虑数据编码值(header 或 配置),它只考虑指定的 alphabet 参数(来自该标头或端点)。

如果 String 中的一些字符无法在所选字母中表示,则它们可能会替换为问号(?)符号。API 用户可能要考虑检查其消息正文是否可以转换为 ISO-8859-1,然后再将其传递给组件,如果没有,则将 alphabet 标头设置为请求 UCS-2 编码。如果没有指定 alphabet 和数据编码选项,则组件可能会尝试检测所需的编码并为您设置数据编码。

alphabet 代码列表在 SMPP 规格 v3.4、section 5.2.19 中指定。SMPP 规范的一个显著限制是没有明确请求使用 GSM 3.38 (7 位)字符集的字母代码。为 alphabet 选择值 0,选择 SMSC 默认 alphabet,这通常意味着 GSM 3.38,但它无法保证。SMPP 网关 Nexmo 实际上允许使用控制面板选项 映射到任何其他字符集。建议用户检查其 SMSC 操作器,以确认将哪一个字符集用作默认值。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部