用smpp在Java中编写法语字符?

时间:2014-03-21 12:08:56

标签: java smpp jsmpp

这是我的代码我试图通过SMTP发送邮件但作为输出?即将到来:

public class Encoding 
{
public static void main(String[] args) throws SocketTimeoutException, AlreadyBoundException, VersionException, SMPPProtocolException, UnsupportedOperationException, IOException 
{
SubmitSM sm=new SubmitSM();
String strMessage="Pour se désinscrire du service TT ZONE, envoyez GRATUITEMENT « DTTZ » ";
String utf8 = new String(strMessage.getBytes("UTF-8"));
UCS2Encoding uc = UCS2Encoding.getInstance(true);
sm.setDataCoding(2);
sm.setMessageText(utf8);
System.out.println(sm.getMessageText());
}
}

1 个答案:

答案 0 :(得分:2)

你的问题在这里:

String strMessage="Pour se désinscrire du service TT ZONE, envoyez GRATUITEMENT « DTTZ » ";
String utf8 = new String(strMessage.getBytes("UTF-8"));

为什么你完全?由于UCS2Encoding类接受String作为参数,因此它将处理编码本身。

只是做:

sm.setMessageText(strMessage);

正如我在你提出的另一个问题中所提到的,你正在混合很多概念。提醒String是一系列char s;它独立于您使用的编码。内部Java使用UTF-16的事实在这里完全无关紧要。它可以使用UTF-32或EBCDIC,甚至使用载体鸽,这个过程本身也不会改变:

                 encode           decode
String (char[]) --------> byte[] --------> String (char[])

通过使用String构造函数将字节数组作为参数,您使用默认的JVM编码从这些字节创建char s的序列。哪个可能是,也可能不是,是UTF-8。

特别是,如果您使用的是Windows,则默认编码为windows-1252。让我们用charset名称替换上面的encodedecode。你做的是:

                 UTF-8           windows-1252
String (char[]) -------> byte[] --------------> String (char[])

“休斯顿,我们遇到了问题!”

有关详细信息,请参阅CharsetCharsetEncoderCharsetDecoder的javadoc。