As we all know, ASCII uses 7-bit to encode chars, so number of bytes used to represent the text is always less than the length of text letters
For example:
StringBuilder text = new StringBuilder();
IntStream.range(0, 160).forEach(x -> text.append("a")); // generate 160 text
int letters = text.length();
int bytes = text.toString().getBytes(StandardCharsets.US_ASCII).length;
System.out.println(letters); // expected 160, actual 160
System.out.println(bytes); // expected 140, actual 160
Always letters
= bytes
, but the expected is letters
> bytes
.
the main proplem: in smpp
protocol sms
body must be <= 140
byte, if we used ascii
encoding, then you can write 160
letters =(140*8/7)
,so i'd like to text encoded in 7-bit based ascii
, we are using JSMPP
library
Can anyone explain it to me please and guide me to the right way, Thanks in advance (: