309.2. 데이터 코딩, 알파벳 및 국제 문자 세트

데이터 코딩 및 알파벳은 메시지별로 지정할 수 있습니다.  엔드포인트에 기본값을 지정할 수 있습니다.  두 개 이상의 값이 설정될 때 이러한 옵션 간의 관계를 이해하고 구성 요소가 작동하는 방식을 이해하는 것이 중요합니다.

데이터 코딩은 SMPP 유선 형식의 8 비트 필드입니다.

알파벳은 데이터 코딩 필드의 비트 0-3에 해당합니다.  메시지 클래스가 데이터 코딩 필드의 비트 5를 설정하여 사용되는 일부 유형의 메시지의 경우, 데이터 코딩 필드의 낮은 두 비트는 알파벳으로 해석되지 않고 비트 2 및 3 만 알파벳에 영향을 미칩니다.

또한 JSMPP 라이브러리의 현재 버전은 메시지 클래스에 비트 0과 1이 사용된다고 가정하면 비트 2와 3 만 지원하는 것으로 보입니다.  JSMPP의 Alphabet 클래스는 ISO-8859-1을 나타내는 값 3 (binary 0011)을 지원하지 않습니다.

JSMPP는 메시지 클래스 매개변수의 표현을 제공하지만 Camel 구성 요소는 현재 데이터 코딩 필드에서 해당 비트를 수동으로 설정하는 것 이외의 다른 방법을 제공하지 않습니다.

발신 메시지에서 데이터 코딩 필드를 설정할 때 Camel 구성 요소는 다음 값을 고려하여 찾을 수 있는 첫 번째 값을 사용합니다.

  • 헤더에 지정된 데이터 코딩
  • 헤더에 지정된 알파벳
  • 끝점 구성(URI 매개 변수)에 지정된 데이터 코딩

이전 버전의 Camel에는 국제 문자 세트를 지원하는 버그가 있었습니다.  이 기능은 모든 메시지에 단일 인코딩을 사용하고 사용자가 메시지별로 변경하려는 경우 문제가 발생했습니다.  이 작업을 수행해야 하는 사용자는 Camel 버전에 다음에 대한 수정 사항이 포함되어 있어야 합니다. 

JIRA 문제: Macro: com.atlassian.sal.api.net.ResponseStatusException: Unexpected 응답이 수신되었습니다. 상태 코드: 404

.

Camel 구성 요소는 데이터 코딩 값을 SMSC로 전송하려는 것 외에도 메시지 본문을 분석하고 Java String(Unicode)로 변환하고 바이트 배열에서 사용할 알파벳을 결정할 때 해당 알파벳의 바이트 배열로 변환하여 데이터 코딩 값 (header 또는 configuration)만 고려하지 않습니다.

선택한 알파벳에 있는 일부 문자를 표시할 수 없는 경우 물음표(?) 기호로 대체될 수 있습니다.  API 사용자는 메시지 본문이 구성 요소에 전달하기 전에 ISO-8859-1로 변환될 수 있는지 확인하고, 그렇지 않으면 알파벳 헤더를 UCS-2 인코딩을 요청하도록 설정할 수 있습니다.  알파벳 및 데이터 코딩 옵션이 전혀 지정되지 않은 경우 구성 요소는 필요한 인코딩을 감지하고 데이터 코딩을 설정할 수 있습니다.

알파벳 코드 목록은 SMPP 사양 v3.4 섹션 5.2.19에 지정됩니다.  SMPP 사양의 한 가지 주목할 만한 제한사항은 GSM 3.38 (7 비트) 문자 세트의 사용을 명시적으로 요청하는 알파벳 코드가 없다는 것입니다.  알파벳에 대해 값 0을 선택하면 SMSC 기본 알파벳을 선택하면 일반적으로 GSM 3.38을 의미하지만 보장되지 않습니다.  SMPP 게이트웨이 Nexmo 를 실제로 사용하면 기본적으로 제어판 옵션으로 설정된 다른 문자 집합에 기본값을 매핑할 수 있습니다. 사용자가 SMSC 연산자를 사용하여 기본값으로 사용되는 문자 세트를 정확하게 확인하는 것이 좋습니다.