以下是 Data Matrix 编码中支持的功能字符转义详解,涵盖 ^FNC1^PROG^ECI 标识符的用途、规范及实际应用场景:


1. ^FNC1(功能符 FNC1)

用途

  • GS1 数据分隔符:用于标识 GS1 应用标识符(AI)之间的分隔(等效于 ASCII 29 的 GS 字符)。

  • 模式切换:在编码中触发特定的数据压缩模式(如 GS1 结构化数据格式)。

规范

  • 语法^FNC1

  • 编码规则

    • 在 GS1 DataMatrix 中,FNC1 必须 出现在第一个数据位置,表示遵循 GS1 标准。

    • 在其他场景中,FNC1 可作为数据字段分隔符(如 (01)12345678901234^FNC1(17)231231)。

示例

(01)95012345678903^FNC1(10)ABC123

编码后,FNC1 会被转换为内部码字 232(GS1 模式下自动处理)。


2. ^PROG(编程指令符)

用途

  • 设备控制:向扫描器或打印机发送编程指令(如设置扫描模式、触发固件操作)。

  • 私有协议:部分厂商用于扩展自定义功能(非 ISO 标准)。

规范

  • 语法^PROG

  • 限制

    • 需接收设备支持特定指令集(通常需参考设备文档)。

    • 可能因厂商不同而行为差异(如 Zebra 扫描器与 Honeywell 设备的不同响应)。

示例

^PROG<SET_SCAN_MODE=CONTINUOUS>

某些设备可能将此指令解析为持续扫描模式。


3. ^ECI(扩展通道解释标识符)

用途

  • 字符集切换:指定后续数据的字符编码(如 UTF-8、GB 18030)。

  • 扩展功能:启用非标准编码或压缩算法(如 ECI 26 为 UTF-8)。

规范

  • 语法^ECIXXXXXXXXXXXX 为 6 位十进制数,实际有效范围为 0-999999)。

  • 常用 ECI 编号

    ECI 值字符集/功能示例场景
    ^ECI000003ISO-8859-1(默认)西欧语言
    ^ECI000020Shift JIS日文文本
    ^ECI000026UTF-8多语言混合数据
    ^ECI000029GB 18030中文文本
    ^ECI000031Big5繁体中文

使用条件

  • 必须启用 parsefnc 选项:否则 ECI 标识符将被视为普通文本。

  • 接收方支持:扫描设备需兼容指定的 ECI 编码。

示例

^ECI000026中文ABC

此数据将 UTF-8 编码的“中文ABC”嵌入 Data Matrix。


4. 注意事项

  1. 兼容性

    • FNC1 和 ECI 是 ISO 标准功能,但 ^PROG 多为厂商自定义。

    • 使用 ECI 前需确认扫描器支持对应字符集。

  2. 转义顺序

    • ECI 标识符应置于数据字段起始位置(如 ^ECI000026^FNC1...)。

    • 多个 ECI 可切换(需设备支持动态切换)。

  3. 错误处理

    • 无效的 ECI 编号可能导致乱码或解码失败。

    • FNC1 位置错误会破坏 GS1 数据结构。


5. 应用场景

功能符典型场景行业案例
^FNC1商品条码(GTIN)、物流追踪零售、医药监管
^PROG工业设备编程、扫描器模式设置制造业、仓储自动化
^ECI多语言标签、特殊符号(如 emoji)跨境电商、跨国物流

通过合理使用这些功能符,可实现符合国际标准(如 GS1、ISO/IEC 16022)的高效编码,满足复杂业务场景需求。