发送的中文短信应该设成什么编码格式?

ciahi 2009-04-02 05:33:02
采用的默认编码格式发送的话,则会出现乱码。
改成UTF-8不行
改成gb2312也不行,全都成问号了。

不知道应该设成什么样的编码格式才能正常的发送???

谢谢谢
...全文
230 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ziweixinghello 2009-04-03
  • 打赏
  • 举报
回复
应该采用默认的编码。
ciahi 2009-04-03
  • 打赏
  • 举报
回复
谢谢!
我的情况目前是这样的:

我的客户端的短信如果发送的目的地址是我的手机的话,则可以正常显示汉字 (采用默认编码)
如果发送到一个网关的话,就会出现问题。

但如果直接在手机上编辑汉字短信发送到这个网关,也不会出现乱码。

也就是说,只有从手机客户端往这个网关发送的时候,才会出现乱码的情况。
alexyu_yxj 2009-04-02
  • 打赏
  • 举报
回复
编码的时候使用UTF-8,解码的时候叶用UTF-8,缺一不可。
不过即使如此,有的机型还是会出乱码,呵呵
yanhan0615 2009-04-02
  • 打赏
  • 举报
回复
就用UTF-8就行,如果出错的话,找找其他原因
首先将短信息格式设为PDU模式 :AT+CMGF=0 发送AT+CMGS= YYY [CR] ;其中 YYY 为TPDU的十进制长度 收到[>][SP]响应后再发送 [SCA][TPDU][ctrl-Z] [SCA]:服务中心地址, 深圳为:0891683108705505F0。 可以用AT指令先设置服务中心地址:AT+CSCA=”+86138007555500” [TPDU]:发送规约数据单元: TYPE 11 MR 00 DA 0D 91683106103962F4 ; 13600193264 PID 00 DCS F4 VP 01 UDL XX ; XX 不大于 8C DD ; XX字节的用户数据 用户数据中最后一个字节为前面XX-1个字节的按位累加和。 TPDU 中用户数据前的PDU规约头的长度是15字节 TPDU 前的服务中心地址[SCA]的长度是9字节。 用户数据最长可用到140字节。 发中文是 pdu 格式为 80 dcs=80 以下是: 例子(1) 发送到 13600193264 报文是 博万通信 译码为 0811535A4E07901A4FE1 08 长度 数据 535A4E07901A4FE1 是“博万通信”的unicode编码,按照内存的编码格式倒过来了 at 命令 AT+CMGS=023(15+8) 返回 > 发送 0011000D91683106103962F4000801 08 535A4E07901A4FE1发送符 具体就这些 例子(2) 发送到 13823684657 报文是: (你好我们在测试) 译码为 0E 4F60597D62114EEC57286D 0E是长度 数据4F60597D62114EEC57286D 是“你好我们在测试”的unicode编码照内 存的编码格式倒过来了 AT+CMGS=029 (15+14) 返回  发送 0011000D91683128634856F7 000801 0E 4F60597D62114EEC57286D 例子中显示其实是一种内存编码方式,如 1360 为 3106 3106103962F4; 13600193264 例子(3):发送到 13600193264 如果要中文,数字,英文混合发送的话,其原理一样,都是发送其UNICODE编码,但是要注意每个数字或英文字母要当作一个汉字来处理。如报文是:博万通信YS 其译码为: 0C 535A4E07901A4FE100590053 其中: (1)0C是报文长度; (2)535A 4E07901A4FE1 0059 0053是“博万通信YS“的编码!! AT+CMGS=027 (15+12) 返回 发送:0011000D91683128634856F7000801 0C535A4E07901A4FE100590053 以下是模块在TEXT及PDU模式下收到中文短信息的内容说明 AT+CMGF? +CMGF: 1 OK // 目前默认的是文本格式,现用其它手机给模块发短信“你好” +CMT: "+8613510158263",,"03/03/27,14:40:10+00" 4F60597D // 收到的是其UNICODE代码 AT+CMGF=0 OK // 设置为PDU格式,然后给模块发短信“你好” +CMT: ,24 0891683108705505F0040D91683115108562F3000830307241044400044F60597D // 收到的信息 其中24表示不包括SCA的PDU的长度;0891683108705505F0表示深圳服务中心地址;04表示First-Octet,指短信业务没有短信状态报告;0D91683115108562F3表示发短信的手机号码;00表示PID;08表示编码模式,是Unicode编码;30307241044400表示发送短信的时间;04表示用户数据的长度;4F60597D表示短信内容 以下是收到短信后如何判断其内容的编码格式: 例如:同样读取的内容都是00410042,但是一个在手机上显示的是AB,一个显示的却是00410042,如何区别
 课程目标:你将对研发框架的代码封装和开发规范制定的底层实现逻辑有所掌握,并形成自己的开发封装套路,告别CRUD课程简介:   1. 课程背景: 能帮你解决什么问题?企业中通常由架构师搭建好开发框架,里面包含了很多封装好的基础结构,日志规范以及响应的异常统一处理,还有相应的参数校验等。很多初中高级开发工程师没有机会接触这部分代码的逻辑,而这部分代码逻辑又是非线性的,单纯看代码逻辑是看不出来执行顺序的,需要大量调试总结。不像mvc代码结构,你知道从Controller层看到Service再到Dao层,而这样底层的基础性代码则像积木,不熟悉的前提下需要一块块的插入拔出,不断总结,而沿着本课程的顺序梳理与实战你将会豁然开朗。市面上的大多文章结构较散,并且处理不够全面,比如返回结构通常是 具体的正例与反例日志统一处理 统一异常处理及特殊的情况处理 参数优雅校验 1基础的校验 2. 自定义校验 3.分组校验最重要的是给大家捋顺了一个清晰的实现结构以上在我们后面章节Spring Boot HelloWorld的至少10个可扩展点里有更多的相关介绍,在核心章节里有更细致的讲解实现。理解框架升级底层逻辑: 全网首套基于Spring Boot 3.x+Java 17开发系列 SpringBoot3的升级背景和路线逻辑掌握代码重构及编码效率提升技巧学习基于最为前沿的Spring Boot 3.x 和 Java 17 开发代码依赖于Spring Boot 3.x Java 17环境开发穿插相应新版本的变化讲解可编写完成一个生产级开发规范框架的制定 包含不限于 统一响应结构统一异常处理基于ThreadLocal处理请求RequestId基于日志框架的MDC 统一记录日志统一状态码处理Filter中的异常及状态码处理,以及日志的完整性处理自定义优雅参数校验学习源码剖析方式方法等等 3. 课程规划1.  课程章节规划 2. 讲课方式代码实战为主+图文演示为辅例如说明后端校验的重要性 以一张图清晰明了的展示说明解答了为何前端有了前端校验还要后端校验的问题 3. 特别说明本课程所有代码使用版本会随着Spring Boot 3.x的开发进度而更新,直到Spring Boot 3.x的正式版本发布,可放心食用本课程的重点会侧重放在研发框架的基础规范编码上,并非专注于SpringBoot3.x和Java17的新特性上讲解。主要是两点原因,1课程的方向侧重点, 2. SpringBoot3.x 官方尚处于MileStone/Snapshot版并未Release,所以大家可关注本人编程燃风后续的产品课程。本课程代码同样适用于Spring Boot 1.x 2.x 只需微调API和相关库版本的即可(注意1.x已经归档不维护) 常见问题:问:是否讲解Java17和SpringBoot3新特性答:本课程的重点会侧重放在研发框架的基础规范编码上,并非专注于SpringBoot3.x和Java17的新特性上讲解。主要是两点原因,1课程的方向侧重点是框架基础规范编码实战 2. SpringBoot3.x 官方尚处于MileStone/Snapshot版并未Release,所以大家可关注本人编程燃风后续的讲解课程。问:代码仅限于SpringBoot3吗? SpringBoot2和SpringBoot1是否适用?答:本课程代码同样适用于Spring Boot 1.x 2.x 只需微调API和相关库版本的即可(注意1.x已经归档不维护)。另外本课程重点讲解代码封装和底层实现逻辑和具体API版本关联不大,只是基于最新的SpringBoot3和Java17实现而已,请放心使用。
本程序参考网上某个例程编写而成,已完成发送短信功能。GSM模块为wavecom moden。先点击获取SIM卡信息按钮获取短信中心号码,然后输入手机号,短信内容发送短信。希望对同样初次接触GSM模块的兄弟们有帮助。 以下是本程序开发纪录(包括程序都写得比较不规范,请见谅!) 7.14----------------------------------------------- 开始着手GSM模块的学习和编程。弄了一天的时间,以为是win7下的超级终端有错误,后来才发现是我把波特率弄错了,这个wave moden的默认波特率是115200,而我却设成了一般情况下的9600。这是一个很大的教训,欲速则不达。 7.15----------------------------------------------- 自己用C#编了个简单的GSM与上位机连通判断的模块,目标是从串口发送“AT”给GSM模块,GSM模块能够返回与超级终端上返回得到的信息一致(即AT\n OK)。不过没有完成预期的目标,查阅了一些资料发现有可能出现的错误是发送的AT指令编码没编好。 7.16----------------------------------------------- 实现了GSM模块与上位机的连通。比如,从C#界面发送“AT”,能够从串口读取到GSM模块返回的“AT\n OK”信息,其他AT指令亦能实现。 发现了一个小BUG,如果GSM模块上电后即在VS2008上调试,则程序能够顺利运行;但如果上电后在超级终端调试过后,再在VS2008上调试,则不能从C#的小程序上获取GSM模块返回的信息。 实现了GSM模块发送短信的功能。可以发送中文\英文短信。在此过程中出现了一个低级失误,没把生成的短信中心号码“+8613000……”前的“+”去掉,导致生成的PDU编码有误,发送失败。

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧