今天要用到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中去发送就乱码,而且只有中文乱。我快被乱死了
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中去发送就乱码,而且只有中文乱。我快被乱死了
解决方案 »
- html$('#id').html('<s:property value="idvalue" />');如何使用这种方法在id后面插入一个s:标签来显示值
- getOutputStream() has already been called for this response问题
- 关于SSH,SSI框架的问题
- 求助: 使用java编写一个文件传输服务器端的程序
- 字符串处理问题
- Hibernate与数据库Informix的问题提,请达人解答!
- 大家在j2ee表示层中提供给用户的界面是不是都用jsp来实施的?有用swing来实施的吗?到底那个更常用一些?
- 关于在Tomcat上部署struts的问题
- 变态的移动PC,我的移动pc装不上WLS就算了,居然连j2sdkee1.3.1 -win都装不上?
- 求救:ClassPath的设置
- Struts+Spring中使用DispatchAction类无法访问指定方法-高手来
- 页面上的一些问题
不会吧,我的所有代码包括数据库都是utf-8的,现在改太……让人无法接受啊,能不能用JDK转的啊?
getBytes("UTF-8"), "gbk")
这样都不行,不知何故?
用命令行运行成功是因为执行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所以说你还要再转一道
a = new String(xxxStr.getBytes(), "gbk")
or
a = new String(xxxStr.getBytes(), "utf-8")
里面的SendMsg方法代码贴出来,发送短信内容应该最终是以字节数组的形式发送出去,
在字符串转换字节数组的那块代码用
“测试信息,恭喜发财”.getBytes("UTF-8")
猜测楼主现在是 “测试信息,恭喜发财”.getBytes()
短信猫我也用过.用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();
}
}
}}