今天要用到BOSS给的GSM MODEM短信猫,是TC35型号,设备附带一个demo环境配置好以后,在cmd中用javac运行该demo,可以正常的发送中文短信出去形式是这样的:
 rc=Mytest.SendMsg(-1,"138*******","测试信息,恭喜发财!");  //发送一条信息,从可以使用的任意端口
下面移植到servlet或者action中去,发送的中文一直是乱码,我的myeclipse默认编辑器编码是utf-8的,那个demo文件也不知道是什么编码格式,我用写字板打开,能正常看懂中文,javac运行时也没特意设置编码方式,OS是XP。因为项目中全部使用UTF-8编码,所以不想更改myeclipse的编辑器环境(貌似改了一次,依然乱码)。后来使用new String("测试信息,恭喜发财!".getBytes("UTF-8"),"GB2312");进行发送,依然乱码,今天一天都在郁闷中度过,恳求高手给个解决方案,特别要注意,用javac在终端中运行,是不会乱码的,但复制,粘贴放到myeclipse中去发送就乱码,而且只有中文乱。我快被乱死了

解决方案 »

  1.   

    GBK 呢?把IDE环境设置成GBK看看,getBytes("UTF-8"),"GBK"); 呢?
      

  2.   

    getBytes("ISO-8859-1"), "gbk");试试这个行不
      

  3.   

    getBytes("ISO-8859-1"), "gbk")结果是一串问号
      

  4.   

    告知楼上各位,IDE改成GBK后,不做任何处理发送出去不是乱码了,可以实现。但是我其他所有.java   .jsp都是utf-8的,这该怎么办呢,谢谢楼上几位的热心回答
      

  5.   


    不会吧,我的所有代码包括数据库都是utf-8的,现在改太……让人无法接受啊,能不能用JDK转的啊?
      

  6.   

    让人无法接受的是:
    getBytes("UTF-8"), "gbk")
    这样都不行,不知何故?
      

  7.   

    new String(getBytes("ISO-8859-1"), "gbk")?
      

  8.   

     楼主用的是中文操作系统吧
    用命令行运行成功是因为执行javac的时候会自动加上系统默认编码格式,
    你系统是中文,所以就默认了javac   -encoding GBK  XXXXX.java所以我感觉在你的IDE编码是UTF-8的情况下,你在发送时应该用下面这样的形式。
    new String("测试信息,恭喜发财!".getBytes(),"UTF-8");在JSP上要有编码设定<%@ page contentType="text/html; charset=GBK"%>当然你中间要是用了Tomcat又不一样了,因为tomcat默认传数据是ISO-8899-1所以说你还要再转一道
      

  9.   

    还是不行啊,我的控制层全都是UTF-8的编码,传输字符串给这个线程,如果这个线程的编码设置为GBK,那传过来的字符串就不认了
      

  10.   

    hava a try
    a = new String(xxxStr.getBytes(), "gbk") 
    or
    a = new String(xxxStr.getBytes(), "utf-8") 
      

  11.   

    直接发送中文字符的unicode码呢?如 登陆:\u767b\u5f55
      

  12.   

    Mytest.SendMsg(-1,"138*******","测试信息,恭喜发财!");
    里面的SendMsg方法代码贴出来,发送短信内容应该最终是以字节数组的形式发送出去,
    在字符串转换字节数组的那块代码用 
                    “测试信息,恭喜发财”.getBytes("UTF-8")
    猜测楼主现在是  “测试信息,恭喜发财”.getBytes()
      

  13.   

    getBytes("ISO-8859-1"), "gbk");试试这个行不
      

  14.   

    你移植到Servlet 或 Action的时候,你的过滤器用的是什么编码? 
    短信猫我也用过.用MyEcplise 你新建个utf-8的class 然后把短信猫的DEMO的代码用写字板打开,再把代码复制进去.
    反正也就一个类.发送的乱码应该和短信猫的二次开发包没有关系的.我的DEMO如下:package com.digitalchina.mondem;import java.util.LinkedList;import com.diagcn.smslib.CIncomingMessage;
    import com.diagcn.smslib.CMessage;
    import com.diagcn.smslib.COutgoingMessage;
    import com.diagcn.smslib.CStatusReportMessage;
    import com.diagcn.smslib.SZHTOCService;public class SampleClass { /**
     * @param args
     */
    public static void main(String[] args) {
    // 与短信设备建立连接,参数 1、端口号,2、速率,3、短信设备牌子,4、短信设备型号
    SZHTOCService srv = new SZHTOCService("COM6", 9600, "Wavecom", ""); try {
    // 设置短信中心号码
    srv.setSmscNumber("+8613800200500"); // 连接设备
    srv.connect(); // 连接成功,可以显示短信设备状态
    System.out.println("Mobile Device Information: ");
    System.out.println(" Manufacturer : "
    + srv.getDeviceInfo().getManufacturer());
    System.out.println(" Model : " + srv.getDeviceInfo().getModel());
    System.out.println(" Serial No : "
    + srv.getDeviceInfo().getSerialNo());
    System.out.println(" IMSI : " + srv.getDeviceInfo().getImsi());
    System.out.println(" S/W Version : "
    + srv.getDeviceInfo().getSwVersion());
    System.out.println(" Battery Level : "
    + srv.getDeviceInfo().getBatteryLevel() + "%");
    System.out.println(" Signal Level : "
    + srv.getDeviceInfo().getSignalLevel() + "%"); // 创建发送对象
    COutgoingMessage msg = new COutgoingMessage("1361053xxxx", "短信猫测试"); // 设置编码
    msg.setMessageEncoding(CMessage.MessageEncoding.EncUcs2); // 此短信需要状态回复
    msg.setStatusReport(true); // 短信有效期
    msg.setValidityPeriod(8); // 发送短信
    srv.sendMessage(msg); // 接收短信代码====================================================================
    LinkedList<CIncomingMessage> msgList = new LinkedList<CIncomingMessage>();
    srv.readMessages(msgList, CIncomingMessage.MessageClass.All);
    for (int i = 0; i < msgList.size(); i++) {
    CIncomingMessage message = msgList.get(i);
    if (message instanceof CStatusReportMessage) {
    // 此短消息为 状态回复短消息
    }
    srv.deleteMessage(message); // 删除都到的短信
    }
    // ============================================================================== } catch (Exception e) {
    e.printStackTrace();
    }finally {
      try {
                    srv.disconnect();
                } catch (Exception e) {
                    e.printStackTrace();
                }
    }
    }}