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 编码来写字体名称可以避免这些错误. ...
随机推荐
- java matlab混合编程之返回值Struct类型
java matlab混合编程的时候当返回值是Struct类型(matlab中的返回类型)如何来取得(java中)其值? 上网找,看到这个网页:http://www.mathworks.cn/cn/h ...
- 10105 - Polynomial Coefficients
描述:杨辉三角与二项式定理 #include <cstdio> int solve(int n,int m) { int sum=1; for(int i=n; i>m; --i) ...
- 从零開始学习制作H5应用——V5.0:懊悔机制,整理文件夹,压缩,模板化
经过前面四个版本号的迭代.我们已经制作了一个从视觉和听觉上都非常舒服的H5微场景应用,没有看过的请戳以下: V1.0--简单页面滑动切换 V2.0--多页切换.透明过渡及交互指示 V3.0--增加lo ...
- [Ext JS 4] 实战之 Picker 和 Picker Field
前言 所谓的picker , 就是弹出一个选择框,让你选择一些信息.比如选择日期, 选择颜色等: 选择的结果总是要放在一个地方的,Picker Field 就是用来放置选择结果的一个文本框. 在Ext ...
- 每日算法之三十八:Anagrams
Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...
- OpenLayers学习笔记4——使用jQuery UI实现測量对话框
OpenLayers学习最好的方式就是跟着其自带的演示样例进行学习,另外对web前端的开发设计要了解,慢慢积累,这样在一般的小项目中应该是足够用了. 本篇參照量測demo实现对话框形式的量測,抛砖引玉 ...
- 关于Platinum库的MediaRender具体C++代码实现探讨
接上篇博文 NDK下 将Platinum SDK 编译成so库 (android - upnp) 讲述了如何利用该代码库编译给android程序调用的so库,其中也提到了,在使用sample-upnp ...
- SocketAsyncEventArgs使用解说
原文:SocketAsyncEventArgs使用解说 如果在.NET下写过网络通讯的同学应该感觉不陌生了,有很多刚入门的同学很多都认为这东西可以大大提高处理效能还有就是使用上很不适应.其实使用之前最 ...
- MySQL 全角转换为半角
序言: 用户注冊时候,录入了全角手机号码,所以导致短信系统依据手机字段发送短信失败.如今问题来了,怎样把全角手机号码变成半角手机号码? 1.手机号码全角转换成半角先查询出来全角半角都存在 ...
- sort功能使用
头: #include <algorithm> using namespace std; 1.默认的sort函数是按升序排序. sort(a,a+n); / ...