Cara panjang SMS dihitung
Satu SMS membawa 140 oktet (1.120 bit) data pengguna. Pada alfabet default GSM 7-bit, setiap karakter memakai 7 bit, sehingga 140 oktet memuat 160 karakter. Pada UCS-2 (encoding Unicode 16-bit yang dipakai untuk SMS), setiap karakter memakai 2 oktet, sehingga ruang yang sama hanya memuat 70 karakter.
Ketika pesan lebih panjang dari satu SMS, pesan dikirim sebagai pesan berantai (concatenated). Setiap bagian diawali User Data Header (UDH) sebesar 6 oktet yang membawa nomor referensi, jumlah total bagian, dan posisi bagian tersebut, sehingga ponsel dapat menyusunnya kembali. Header itu menyisakan 134 oktet per bagian: 153 karakter GSM-7 atau 67 karakter UCS-2.
Penerima melihat satu pesan, tetapi operator dan penyedia layanan menagih setiap bagian. Pesan GSM-7 sepanjang 161 karakter dihitung dua SMS, dan pesan berbahasa Arab sepanjang 71 karakter juga dihitung dua SMS.
- GSM-7: 160 karakter dalam satu SMS, 153 per bagian bila berantai (306 untuk 2 bagian, 459 untuk 3).
- UCS-2: 70 karakter dalam satu SMS, 67 per bagian bila berantai (134 untuk 2 bagian, 201 untuk 3).
- Satu karakter non-GSM di mana pun dalam teks mengubah seluruh pesan menjadi UCS-2.
Alfabet GSM-7 dan tabel ekstensinya
Alfabet default GSM 7-bit didefinisikan dalam 3GPP TS 23.038 (semula GSM 03.38). Tabel dasarnya memiliki 128 posisi: huruf Latin dan angka, tanda baca umum, serta karakter seperti @ £ $ ¥ è é ù ì ò Ç Ø ø Å å Ä Ö Ñ Ü ä ö ñ ü à ß Æ æ É ¿ ¡ § dan huruf kapital Yunani Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ. Line feed dan carriage return juga merupakan karakter tunggal.
Sepuluh karakter lain berada di tabel ekstensi dan diakses melalui kode escape, sehingga masing-masing memakan dua septet: tanda euro €, caret ^, kurung kurawal { }, kurung siku [ ], tilde ~, garis vertikal |, backslash \ dan form feed. Pesan dengan 158 huruf dan satu € tepat 160 septet; tambah satu huruf lagi dan pesan menjadi dua segmen.
Urutan escape harus tetap berada dalam satu bagian, sehingga karakter dua septet yang akan melewati batas 153 septet dipindahkan ke bagian berikutnya. Penghitung ini menerapkan aturan tersebut, itulah sebabnya satu bagian bisa berakhir di 152.
TS 23.038 juga mendefinisikan tabel pergeseran bahasa nasional (misalnya Turki, Spanyol, Portugis, dan beberapa aksara India) yang menjaga sebagian pesan tetap dalam encoding 7-bit. Dukungannya bergantung pada jaringan dan perangkat, sehingga sebagian besar platform, termasuk penghitung ini, hanya memakai alfabet default.
Karakter yang diam-diam mengubah SMS Anda menjadi Unicode
Sebagian besar pesan 70 karakter yang tidak terduga disebabkan oleh teks yang disalin dari pengolah kata, CMS, atau keyboard ponsel yang menyisipkan karakter tipografi secara otomatis. Tampilannya hampir identik dengan padanan GSM-7, tetapi merupakan code point yang berbeda.
Huruf beraksen yang tidak ada di tabel, seperti á í ó ú â ê ã õ dan ç huruf kecil, juga memaksa UCS-2. Ganti hanya jika audiens Anda menerima ejaan tanpa aksen; untuk banyak bahasa, ejaan yang benar lebih penting daripada segmen tambahan.
- Tanda kutip dan apostrof melengkung ‘ ’ “ ” (gunakan ' dan ").
- Tanda hubung en dan em – — (gunakan -), serta elipsis … (gunakan ...).
- Spasi non-breaking dan spasi tipis, yang sering tidak terlihat setelah salin-tempel (gunakan spasi biasa).
- Karakter zero-width dan byte order mark yang tersembunyi di template (hapus).
- Emoji: kebanyakan memakai 2 unit UCS-2, emoji bendera atau warna kulit memakai 4, dan urutan keluarga memakai 8 atau lebih.
Ubah pesan ke GSM-7 dengan satu klik
Saat pesan berada dalam Unicode, tombol Konversi ke GSM-7 menulis ulang pesan hanya dengan karakter GSM-7 jika memang aman: tanda kutip dan tanda hubung melengkung menjadi versi biasa, spasi tak terlihat dihapus, aksen yang tidak ada di GSM-7 dihilangkan (á → a, ã → a, ç huruf kecil → Ç), dan ligatur serta simbol dieja (œ → oe, ™ → TM). Karakter yang sudah GSM-7, seperti é, ü, ñ, ß, dan €, dipertahankan.
Alat ini mencantumkan setiap perubahan dan menampilkan jumlah segmen sebelum dan sesudah, dan Urungkan mengembalikan teks asli Anda. Teks Arab tidak dapat dikonversi: pesan berbahasa Arab selalu tetap dalam Unicode dengan 70 karakter per SMS, jadi persingkat pesan atau kirim lewat WhatsApp. Emoji dan aksara non-Latin lainnya juga dibiarkan apa adanya.
SMS berbahasa Arab: 70 karakter, 67 per bagian
Huruf Arab bukan bagian dari GSM-7, sehingga setiap SMS berbahasa Arab dikirim dalam UCS-2: 70 karakter dalam satu pesan dan 67 per bagian setelah pesan lebih panjang. Pesan Arab sepanjang 140 karakter dihitung tiga segmen, bukan dua, karena 140 lebih dari 2 × 67 = 134.
Setiap code point dihitung, termasuk spasi, huruf Latin yang bercampur dalam teks, digit Arab-Indic, dan diakritik (tashkeel). Kata yang diberi harakat penuh bisa memakai unit dua kali lipat dibanding kata yang sama tanpa harakat, jadi hilangkan diakritik pada pesan transaksional kecuali diperlukan untuk menghindari ambiguitas.
Untuk OTP (kode verifikasi) dan notifikasi di negara Teluk (GCC), usahakan teks Arab di bawah 70 karakter, letakkan kode di awal pesan, dan hindari emoji. Jika Anda mengirim notifikasi yang sama dalam bahasa Inggris, versi Inggris bisa lebih dari dua kali lebih panjang dengan harga yang sama.
Dari segmen ke biaya
Tagihan SMS bulanan Anda ditentukan oleh segmen, bukan jumlah pesan: segmen per pesan × pesan per bulan × harga untuk jaringan tujuan. Memangkas kampanye dari 2 segmen menjadi 1 menurunkan biaya setiap pengiriman hingga separuhnya.
Periksa teks akhir dengan variabel yang sudah terisi. Nama pelanggan, nomor pesanan, atau tautan pendek dapat membuat template melewati batas, dan nama berhuruf Arab atau beraksen dapat mengubah template GSM-7 menjadi UCS-2 hanya untuk sebagian penerima.
- Uji nilai terpanjang yang realistis untuk setiap placeholder.
- Persingkat tautan dan hapus spasi serta baris baru di akhir.
- Pilih satu ajakan bertindak yang jelas daripada pesan panjang multi-bagian.
