Я потратил сумасшедшее время, пытаясь получить специальные символы, чтобы пройти надлежащим образом в нашем приложении. Наш поставщик сказал нам использовать «GSM0338, также известный как ISO-8859». Для меня это означает ISO-8895-1, поскольку нам нужны испанские символы.Специальные символы, проходящие как? в SMPP и Java
Поток: (Рассказывая вам все, так как я играл с этим на некоторое время.)
использовано Notepad ++ для создания файлов сообщений в кодировке UTF-8 кодировке. (Нет опции для сохранения, как ISO-8859-1).
Направлено каждый файл с помощью быстрой программы Java, которая преобразует и записывает новые файлы:
String text = readTheFile(....); output = text.getBytes("ISO-8859-1"); FileOutputStream fos = new FileOutputStream(filesPathWithoutName + "\\converted\\" + filename); fos.write(output); fos.close();
SMPP тестовый класс в другом проекте читает эти файлы:
private static String readMessageFile(final String filenameOfFirstMessage) throws IOException { BufferedReader br = new BufferedReader(new FileReader(filenameOfFirstMessage)); String message; try { StringBuilder sb = new StringBuilder(); String line = br.readLine(); while (line != null) { sb.append(line); sb.append("\n"); line = br.readLine(); } message = sb.toString(); } finally { br.close(); } return message; }
Calls отправить
public void send(final String message, final String targetPhone) throws MessageException { SmppMessage smppMessage = toSmppMessage(message, targetPhone); smppSmsService.sendMessage(smppMessage); } private SmppMessage toSmppMessage(final String message, final String targetPhone) { SmppMessage smppMessage = new SmppMessage(); smppMessage.setMessage(message); smppMessage.setRecipientAddress(toGsmAddress(targetPhone)); smppMessage.setSenderAddress(getSenderGsmAddress()); smppMessage.setMessageType(SmppMessage.MSG_TYPE_DATA); smppMessage.setMessageMode(SmppMessage.MSG_MODE_SAF); smppMessage.requestStatusReport(true); return smppMessage; }
Задача: СМС, содержащие буквы ñ í ó, доставляются, но с этими буквами отображаются как вопросительные знаки.
Конфигурация:
smpp.smsc.charset=ISO-8859-1
smpp.data.coding=0x03
Абсолютно любая помощь с этим было бы весьма признателен. Большое вам спасибо за чтение.