ASCII与Unicode编码消息写文件浅析
【文章摘要】
ASCII与Unicode是两种常见的字符编码。
它们的表示方法不一样,因而在程序中就要差别处理。
本文基于作者的实际开发经验,对ASCII与Unicode两种字符编码消息的写文件过程进行了具体的分析,为相关软件开发工作的开展提供了故意的參考。
【关键词】
ASCII Unicode C语言 编码 开发
一、ASCII与Unicode编码简单介绍
1. ASCII编码简单介绍
ASCII是一套基于拉丁字母的电脑编码系统。它使用指定的7位或8位二进制数的组合来表示128或256 种可能的字符。
标准ASCII码使用7位二进制数来表示全部的大小写字母、数字0到9、标点符号。 以及在美式英语中使用的特殊控制字符。
2. Unicode编码简单介绍
Unicode码是一种国际标准编码,採用二个字节编码,与ASCII码不兼容。眼下普遍採用的是UCS-2。
Unicode编码从0到127的字符与ASCII编码的字符一样,比方字母“a”的Unicode编码是0x0061。十进制是97;而“a”的ASCII编码是0x61,十进制也是97。
二、对ASCII与Unicode编码消息写文件的处理
1. 需求描写叙述
在某版本号的需求中。要求某模块将还有一模块发过来的短信消息写到文件里,该消息的编码格式为ASCII或Unicode。
2. 对两种编码消息写文件的处理
(1) ASCII编码消息的处理
对于ASCII编码的消息,可直接将消息内容写入文件里,不用做不论什么额外的处理。
(2) Unicode编码消息的处理
对于Unicode编码的消息,须要在要写入的文件头部加入“FFFE”(小端模式)或“FEFF”(大端模式),然后将消息内容拼接到后面。
大、小端模式要和发端模块约定好。在本模块的配置文件里控制当时发送的消息是小端模式还是大端模式。
大端模式。是指数据的高位保存在内存的低地址中,而数据的低位保存在内存的高地址中;小端模式,是指数据的高位保存在内存的高地址中,而数据的低位保存在内存的低地址中。
三、C程序实现
基于第二部分的需求和分析,程序框架例如以下所看到的:
iFileSize = iMsgLength+2;
if (write(fd, szFileContent, iFileSize) != iFileSize) // 写文件
{
WRITELOGEX(LOG_ERROR, ("exec write failed. FileName=%s", szFileName));
close(fd);
fd = 0;
return ERR_GENERAL;
}
}
else // ASCII编码格式
{
iFileSize = iMsgLength; // 长度不变
if (write(fd, szFileContent, iFileSize) != iFileSize) // 写文件
{
WRITELOGEX(LOG_ERROR, ("exec write failed. FileName=%s",szFileName));
close(fd);
fd = 0;
return ERR_GENERAL;
}
}
// 写文件成功
WRITELOGEX(LOG_INFO, ("exec write successfully. FileName=%s",szFileName));
close(fd);
fd = 0;
四、总结
本文对ASCII与Unicode两种字符编码进行了简单的分析。并用C语言代码演示了两种编码消息的整个写文件的过程。由于字符编码格式的多样性。所以我们要依据每种编码的特点来进行写文件的操作。本文为相关软件项目依据不同编码格式写文件的开发工作的开展提供了故意的參考。
(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426。欢迎关注!
)
ASCII与Unicode编码消息写文件浅析的更多相关文章
- pugixml读取unicode编码的xml文件的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 实际上在多字节编码的情况下,即以记事本打开显示的ANSI编码的,如下图: pugixml是可以直接读取中文字符的,示例 ...
- ASCII和Unicode编码的区别
归纳: 编码 大小 支持语言 ASCII 1个字节 英文 Unicode 2个字节(生僻字4个) 所有语言 UTF-8 1-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节 所有语言 具体 ...
- 从ffmpeg filter里出来的数据直接送给avcodec_encode_audio2编码,写文件有错。
http://hi.baidu.com/mingyuejingque/item/78e71aff57ae9ec5a835a2e4 感谢mingyuejingque st = avformat_new_ ...
- ASCII 和 Unicode 编码的由来
大话数据结构上的说明: 网络博文的说明:
- 2.数码相框-编码(ASCII/GB2312/Unicode)介绍,并使LCD显示汉字字符(2)
在上章-学习了数码相框的框架分析(1)了 本章主要内容如下: 1)熟悉ASCII/GB2312/Unicode编码 2)写应用程序,使LCD显示汉字和字符 大家都知道,数据传输的是二进制,而字符和汉字 ...
- 2.数码相框-编码(ASCII/GB2312/Unicode)介绍
转载:https://www.cnblogs.com/lifexy/p/8485634.html 在上章-学习了数码相框的框架分析(1)了 本章主要内容如下: 1)熟悉ASCII/GB2312/Uni ...
- Java用native2ascii命令做unicode编码转换
背景:在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验证用的消息资源(properties)文件就需要进行Unicode重新编码.原因是java ...
- CSS Unicode 编码
CSS 中文字体 Unicode 编码表 在 CSS 中设置字体名称,直接写中文是可以的.但是在文件编码(GB2312.UTF-8 等)不匹配时会产生乱码的错误. 为此,在 CSS 直接使用 Unic ...
- CSS常用字体Unicode 编码
在 CSS 中设置字体名称,直接写中文是可以的.但是在文件编码(GB2312.UTF-8 等)不匹配时会产生乱码的错误. 为此,在 CSS 直接使用 Unicode 编码来写字体名称可以避免这些错误. ...
随机推荐
- hdu 5115 Dire Wolf
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115 题目分类:区间dp 题意:有n只狼,每只狼有两种属性,一种攻击力一种附加值,我们没杀一只狼,那么 ...
- fusionchart实现ZoomLine 源码 破解版 能够导出
近期画油量曲线须要用到ZoomLine官网看了好几天.如今整理出来供大家參考使用 zoomline.html源码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD ...
- SPOJ 7001(莫比乌斯反演)
传送门:Visible Lattice Points 题意:0<=x,y,z<=n,求有多少对xyz满足gcd(x,y,z)=1. 设f(d) = GCD(a,b,c) = d的种类数 : ...
- Windows内核
每天我们都在使用Windows系统学习.编程.听音乐.玩游戏,Windows的操作想来是非常熟练了,但是你又对Windows究竟了解多少呢?本系列的目的,就是让你对Windows系统有个更直观.更清楚 ...
- 诺贝尔物理学奖公布:LED灯将点亮了整个21世纪
很多其它精彩.破晓博客:点击打开链接 7日.在瑞典首都斯德哥尔摩,瑞典皇家科学院常任秘书诺尔马克(左二)宣布2014年诺贝尔物理学奖得主.新华社发 ■人物 中村修二 勇于追讨酬劳的科学家 被誉为&qu ...
- MSF 离线攻击
MSF 离线攻击 MSF连环攻击在internet上实现是不太现实的,网络中的安全设备(防火墙.入侵检测.入侵防护系统). 实验拓扑如下: 实验说明:安全实验中的包过滤防火墙在测试中使用的是linux ...
- poj3311(状压dp)
题目连接:http://poj.org/problem?id=3311 题意:一个送披萨的,每次送外卖不超过10个地方,给你这些地方之间的时间,求送完外卖回到店里的总时间最小. 分析:跑一遍Floyd ...
- H.O.T candy
candy是什么意思_candy在线翻译_英语_读音_用法_例句_海词词典 candy
- unity中的MonoBehaviour.OnMouseDown()
在官网的api文档中仅说明了 Description OnMouseDown is called when the user has pressed the mouse button while ov ...
- Cordova CLI源码分析(三)——初始化
本部分主要涉及以下三个文件 1 cli.js 2 cordova.js 3 events.js 通过前一篇package.json的分析,可以知道,当命令行执行cordova相关命令时,首先调用mai ...