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


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

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

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

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

虽然 JSMPP 提供了消息类参数的表示,但 Camel 组件目前不提供设置它的方式,而不是在数据编码字段中手动设置相应的位。

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

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

较旧版本的 Camel 对于国际字符集的支持错误。仅当一个编码用于所有消息时,此功能才可以正常工作,当用户希望根据每个消息更改它时,才会出现问题。需要此工作的用户应该确保其 Camel 版本包括修复

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

.

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

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

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat