Как все мы знаем, ASCII использует 7-битный код для кодирования символов, поэтому число байтов, используемых для представления текста, всегда меньше длины текстовых букв
Например:
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
Всегда letters
= bytes
, но ожидается letters
> bytes
.
основной прототип: в smpp
протоколе sms
тело должно быть <= 140
байт, если мы использовали ascii
кодировку, то вы можете написать 160
букв =(140*8/7)
, так Я хотел бы, чтобы текст, закодированный в 7-bit based ascii
, мы используем JSMPP
библиотека
Может кто-нибудь объяснить мне, пожалуйста, и направить меня на правильный путь, спасибо заранее (: