본문으로 건너뛰기
PDU 인코더

SMS-SUBMIT 메시지용 온라인 PDU 인코더

메시지를 GSM 모뎀이 PDU 모드에서 기다리는 16진수 문자열로 바꿉니다. 인코더는 GSM-7 세프텟을 패킹하고 필요하면 UCS-2로 바꾸며 메시지가 여러 파트를 요구하면 UDH를 붙입니다.

브라우저에서 실행계정 불필요GSM-7과 UCS-2

SMS-SUBMIT PDU 만들기

폼은 예제와 함께 열립니다. 텍스트, 번호와 매개변수를 바꾸고 ‘인코딩’을 누르세요. 결과는 이 페이지의 JavaScript가 이 기기에서 만듭니다.

PDU 인코더

네트워크 불필요

GSM-7에서는 한 메시지에 160 세프텟이 들어갑니다. GSM 문자 집합 밖의 문자가 하나라도 있으면 메시지 전체가 UCS-2가 됩니다.

번호가 +로 시작하지 않으면 국내 형식(0x81), +가 있으면 국제 형식(0x91)을 씁니다.

0이면 이 필드를 포함하지 않습니다. 도구는 유효 기간을 8760시간(약 1년)으로 제한합니다.

0–255는 8비트 참조, 256–65535는 16비트 참조입니다.

리포트 옵션

파트UDH이 파트의 텍스트

각 블록은 ----- PDU n/total ----- 행으로 시작합니다. PDU 모드에서는 블록마다 16진수 문자열을 따로 보내세요.

입력한 내용은 어디로도 전송되지 않습니다. 로컬 파일이나 사이트의 오프라인 사본에서도 동작합니다.

PDU 모드란 무엇인가

PDU 모드는 단순 문자열이 아니라 프로토콜 프레임 전체를 모뎀에 넘깁니다.

SMS는 텍스트만이 아닙니다. 메시지 주위에 서비스 센터 주소, 수신자, 인코딩 표시, 유효 기간과 길이가 있습니다. 텍스트 모드(AT+CMGF=1)에서는 모뎀이 이 필드를 채우고 읽을 수 있는 부분만 보여 줍니다. PDU 모드(AT+CMGF=0)에서는 프레임 전체를 16진수로 지정하므로 모든 필드가 우리 손에 있습니다.

프레임은 3GPP TS 23.040이, 문자 집합과 7비트 패킹은 TS 23.038이 정의합니다. 인코더는 둘을 따릅니다: 번호에서 숫자 아닌 문자를 지우고, BCD 쌍을 뒤집고, 주소 타입 옥텟을 설정하고, GSM-7 또는 UCS-2를 고르고, 세프텟을 순서대로 패킹하며 메시지가 나뉘면 헤더 표시를 붙입니다.

텍스트가 이상해 보이는 이유.7비트 문자는 8비트 옥텟에 채워지므로 한 세프텟이 두 바이트에 걸칠 수 있습니다. GSM-7 PDU는 문자당 한 바이트의 나열이 아니며 손으로 고치면 쉽게 깨집니다.

첫 옥텟이 중요한 이유.서비스 센터 뒤의 옥텟은 메시지 타입, 리포트 요청과 연결 표시를 담습니다. 인코더는 0x01에서 시작해 연결에는 0x40, 유효 기간에는 0x10, 리포트 요청에는 0x20을 더합니다.

SMS-SUBMIT 필드 구조

결과를 왼쪽부터 읽으면 필드가 이 순서로 나옵니다.

필드옥텟담는 내용인코더가 쓰는 값
SCA1 + n서비스 센터 주소와 주소 타입 옥텟비우면 00; 아니면 길이 옥텟, 주소 타입과 BCD 숫자
첫 옥텟1메시지 타입, 유효 기간 형식, 리포트 요청, 헤더 표시SMS-SUBMIT은 01, 필요하면 40, 10, 20을 더함
MR1장치가 증가시키는 메시지 참조연결 참조를 1옥텟으로 자른 값; 미설정이면 00
수신자2 + n번호 길이, 주소 타입, BCD 숫자국내 번호는 81, 입력이 +로 시작하면 91
PID1프로토콜 식별자00, 일반 단문 메시지
DCS1메시지의 문자 집합과 클래스GSM-7 00, UCS-2 08, 플래시 SMS 10 또는 18
VP0, 1, 7유효 기간: 상대, 확장, 절대0시간이면 생략; 아니면 범위에 따라 눈금이 커지는 상대 옥텟(5분, 30분, 1일, 1주)
UDL1사용자 데이터 길이GSM-7은 세프텟 수(UDH 포함), UCS-2는 옥텟 수
UDn선택적 UDH와 패킹된 텍스트정렬된 UDH 뒤 7비트 패킹, 또는 UCS-2를 상위 바이트부터

상대 유효 기간은 한 옥텟입니다: 12시간까지 5분 단위로 0–143, 24시간까지 30분 단위로 144–169, 30일까지 1일 단위로 170–196, 그 이상은 1주 단위로 197–255이며 모두 서비스 센터가 메시지를 받은 시점부터 셉니다. 도구는 0–8760시간(약 1년)을 받습니다.

GSM-7, UCS-2와 연결된 SMS

PDU 하나는 140 옥텟을 담습니다. 몇 글자가 들어가는지는 문자 집합과 UDH 유무에 달렸습니다.

인코딩PDU 하나8비트 UDH16비트 UDH
GSM-7160 세프텟153 세프텟152 세프텟
UCS-270 단위67 단위66 단위

6바이트 UDH는 48비트를 차지하며 GSM-7에서 7 세프텟으로 반올림됩니다. 16비트 참조는 옥텟 하나, 즉 슬롯 하나를 더 씁니다. 그래서 한 파트의 한도가 160이 아니라 153 또는 152입니다.

GSM-7은 기본 GSM 문자 집합의 라틴 문자, 숫자와 기호를 담습니다. 다음 열 글자는 두 세프텟을 씁니다: €, ^, {, }, [, ], ~, |, 역슬래시와 폼 피드. 인코더는 각 앞에 이스케이프 1B를 쓰고 두 파트 사이에서 쌍을 자르지 않습니다. 두 표에 모두 없는 문자는 UCS-2를 강제합니다: 문자당 2옥텟, 한도 70.

디코딩 예시

이 결과는 페이지에 첨부된 회귀 테스트 파일에서 나왔습니다. 입력은 고정되어 있고 기대 16진수 문자열은 TS 23.038 / TS 23.040의 독립 구현으로 구했습니다.

입력인코딩PDU
Hello SMSDeliverer.com!GSM-7, 국내 번호, 서비스 센터 없음000100098121436587F9000017C8329BFD064D9B5362999DB697E565B96BFC6E8700
€GSM-7, 확장 문자000100098121436587F90000029B32
您好,世界!UCS-2000100098121436587F900080C60A8597DFF0C4E16754CFF01

테스트 파일은 assets/js/tests/pdu-vectors.json입니다. 이전 빌드에서 기록한 행도 들어 있으며 실패로 표시된 벡터와 결함 설명이 함께 있습니다. 테스트가 통과할 때까지 고치지 않습니다.

텍스트 모드 대신 PDU 모드가 필요한 때

텍스트 모드는 읽기 쉽습니다. PDU 모드는 실제로 보내는 내용을 통제하는 유일한 방법입니다.

긴 메시지

연결된 SMS는 UDH로 묶인 PDU의 연속입니다. 파트, 순서와 참조는 PDU 모드에서만 보입니다.

연동

게이트웨이, 시험대 또는 프레임을 AT+CMGS로 넘기는 큐를 만든다면 모뎀이 문자열을 해석한 결과가 아니라 정확한 옥텟이 필요합니다.

진단

읽을 수 없는 텍스트, 사라진 악센트와 깨진 분할은 대개 잘못된 DCS나 손상된 UDH입니다. 둘 다 여기서 보입니다.

두 모드는 같은 네트워크에 닿고 비용도 같습니다. 달라지는 것은 프레임을 만드는 위치입니다: 모뎀 안인가, 확인할 수 있는 프로그램인가. 문자 집합, 유효 기간이나 리포트 요청을 메시지에 넣어야 한다면 PDU 모드가 가장 짧은 길입니다. 텍스트 모드는 빠른 점검용으로 남고 이 사이트의 디코더는 받은 프레임을 그대로 읽습니다.

자동화가 필요하다면

이 페이지는 조회용 도구입니다. SMS Deliverer는 큐에 있는 모든 메시지에 같은 처리를 합니다.

Windows 앱은 긴 메시지를 나누고, GSM-7 또는 UCS-2를 고르고, UDH 참조를 설정하고, 실패한 파트를 다시 보내며 전송 리포트를 연락처 옆에 저장합니다. 같은 인코딩 경로가 메시지 하나에도 수천 개에도 적용되고 발송은 내 모뎀의 SIM이 합니다.

GSM 모뎀 설명은 하드웨어를, Windows 소프트웨어 페이지는 전송과 리포트를 다룹니다. PDU 디코더는 모뎀이나 휴대폰에서 뽑은 프레임을 읽습니다.

인코더 결과에 담기는 것

  • GSM-7 패킹과 확장 문자 쌍
  • 서로게이트 쌍을 보존한 UCS-2
  • 8비트 및 16비트 연결 참조
  • 국내 및 국제 형식 수신자
  • 상대 유효 기간과 플래시 클래스

2026-11 확인. 무료 평가판으로 전체 전송 경로를 시험할 수 있습니다. 이 도구는 라이선스도 설치도 필요 없습니다.

구매자가 자주 묻는 질문

인코더는 무료인가요? 계정이 필요한가요?

무료이며 계정이 필요 없습니다. 이 페이지는 HTML과 JavaScript로만 되어 있고 사이트의 오프라인 사본에서도 동작합니다.

PDU가 00으로 시작하는 이유는?

첫 옥텟은 서비스 센터 주소의 길이입니다. 00은 PDU에 서비스 센터가 없고 장치나 모뎀이 SIM에 적힌 값을 쓴다는 뜻입니다. 프레임에 포함하려면 서비스 센터 번호를 입력하세요.

긴 메시지가 여러 PDU를 만드는 이유는?

PDU 하나는 140 옥텟을 담습니다. GSM-7은 160 세프텟, 6바이트 UDH가 있으면 153, UCS-2는 70 단위, 같은 헤더가 있으면 67입니다. 텍스트는 문자 경계에서 나뉘고 파트마다 순서 번호가 붙습니다.

결과를 AT+CMGS로 보낼 수 있나요?

됩니다. AT+CMGF=0으로 모뎀을 PDU 모드로 두고 서비스 센터 필드 뒤에 프레임의 옥텟 수를 넘기세요. 파트를 순서대로 하나씩 보내면 장치가 UDH의 참조와 순서 번호로 다시 합칩니다.