博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++读取utf8等不同编码文件
阅读量:4294 次
发布时间:2019-05-27

本文共 892 字,大约阅读时间需要 2 分钟。

我们经常会遇到文件打开乱码的情况,特别是用C语言操作文件的时候。我用notepad++打开发现是utf8编码的,后来上网查了一下,UTF-8是变长的,一般情况下文件开头有个BOM(Byte Order Mark)作为标识,一般文本编码的BOM:

ANSI:没有BOM,直接是内容。

UNICODE(LE):FF FE

UNICODE(BE):FE FF
UTF-8:EF BB BF

【注】还有一种无BOM的UTF-8编码,这里不考虑。

ANSI采取的是英文字符一个字节,汉字字符两个字节的编码方式,而UNICODE采取使用0-0x10FFFF的数字来映射所有字符,被称为万国码,这里的UNICODE(LE),UNICODE(BE),UTF-8都是UNICODE的子集,其中UNICODE(LE),UNICODE(BE)采用固定两个字节长度的编码,UTF-8采用1到4个字节的变长字节的编码。

LE,BE分别指Little Endian,Big Endian。BIG-ENDIAN就是低位字节排放在内存的高端,高位字节排放在内存的低端。而LITTLE-ENDIAN正好相反。

【举个栗子】现在要编码数字1,我们知道1的4字节编码是0x00000001

采用BE编码,四个字节分别是0x01,0x00,0x00,0x00

采用LE编码,四个字节分别是0x00,0x00,0x00,0x01

【注】CPU读取内存从低地址到高地址

读取文本文件之前先判断BOM,然后分别用不同的方法进行读取,本文说明的是C语言操作方法。

打开这几种的字符方法基本相同,ANSI和UNICODE都可以用fopen(const char* fname,const char* mode)打开,如果有中文再进行格式的转换即可,UTF-8需要用_wfopen(L"utf8.txt", L"r,ccs=utf-8")打开,当然了,这个方法也能打开前面两种编码,只要指定编码格式(ccs=<encoding>)即可。

【注】有时读取的字符串不能正常显示,须在读取之前指定地区,setlocal(LC_ALL,"");

转载地址:http://bvuws.baihongyu.com/

你可能感兴趣的文章
海龟交易法则16_附原版海龟交易法则
查看>>
克罗谈投资策略01_期货交易中的墨菲法则
查看>>
克罗谈投资策略02_赢家和输家
查看>>
克罗谈投资策略03_你所期望的赌博方式
查看>>
克罗谈投资策略04_感觉与现实
查看>>
通向财务自由之路01_导读
查看>>
通向财务自由之路02_成功的决定因素:你
查看>>
中低频量化交易策略研发01_引言
查看>>
中低频量化交易策略研发06_推进的择时策略
查看>>
史丹·温斯坦称傲牛熊市的秘密
查看>>
期货市场技术分析01_理论基础
查看>>
期货市场技术分析02_趋势的基本概念
查看>>
期货市场技术分析03_主要反转形态
查看>>
期货市场技术分析04_持续形态
查看>>
期货市场技术分析05_交易量和持仓兴趣
查看>>
TB交易开拓者入门教程
查看>>
TB创建公式应用dll失败 请检查用户权限,终极解决方案
查看>>
python绘制k线图(蜡烛图)报错 No module named 'matplotlib.finance
查看>>
talib均线大全
查看>>
期货市场技术分析06_长期图表和商品指数
查看>>