ian*_*ank 0 java utf-8 iso-8859-1 smpp
我花了很多时间试图在我们的应用程序中正确地使用特殊字符.我们的供应商告诉我们使用"GSM0338,也称为ISO-8859".对我来说,这意味着ISO-8895-1,因为我们想要西班牙语字符.
流程:(告诉你一切,因为我已经玩了一段时间了.)
使用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();
Run Code Online (Sandbox Code Playgroud)另一个项目中的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;
}
Run Code Online (Sandbox Code Playgroud)电话发送
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;
}
Run Code Online (Sandbox Code Playgroud)问题: 包含字母ñí的短信已发送,但这些字母显示为问号.
组态:
smpp.smsc.charset=ISO-8859-1
smpp.data.coding=0x03
Run Code Online (Sandbox Code Playgroud)
绝对有任何帮助将非常感激.非常感谢您的阅读.
那么,你的提供者是错的.GSM 03.38不是ISO-8859-1.它们通过"Z"(0x5A)是相同的,但在此之后它们会发散.例如,在GSM 03.38中,ñ是0x7D,而在ISO-8859-1中,它是0xF1.由于GSM 03.38是一个7位代码,因此高于0x7F的任何内容都将以"?"形式出现.0x5A之后的任何东西都会出乎意料.
由于Java通常不支持GSM 03.38,因此您必须手动解码.它应该不会太难,并且以下软件可能已经完成了您需要的大部分工作:
您可能还会发现GSM 03.38和Unicode之间的转换表非常有用.
| 归档时间: |
|
| 查看次数: |
3641 次 |
| 最近记录: |