众所周知TXT文件的编码分为ASCI、UNICODE、UTF8,其中UNICODE又分big-endian、little-endian,具体怎么区分它们可以参照TXT文件的BOM;
Byte Order Mark。BOM是一个有点小聪明的想法:
在UCS编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。
这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF(读者可以用我们前面介绍的编码方法验证一下)。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。Windows就是使用BOM来标记文本文件的编码方式的。
今天我们要说的就是怎么用wstring和string读取、保存txt文件,我们可采用fopen、fwrite的方式读写TXT文档,当然我们也可以用标准库里的fstream来进行读写,它们的注意事项基本是一致的。
读写utf8、UNICODE的文件要采用wstring/string和 wistringstream/istringstream wostringstream/ostringstream来操作,但要注意保存时候一定要有BOM,否则会导致乱码.
分享到:
相关推荐
String与WString的字符转换代码,包含4种字符相互转换。
wstring转成string 关键 WideCharToMultiByte, 实现一个unicode字符串到一个多字节字符串。
good resources about string
【工控老马出品,必属精品,质量保证,亲测能用】 资源名:C#使用S7.Net,Sharp7连接... 更新:内部添加sharp7连接PLC增加读写bool变量,增加读PLC string类型,Wstring类型。 适合人群:新手及有一定经验的开发人员
各种字符串类型的转换方法,留着备份以后使用
一、 C++的string的使用 3 1.1 C++ string简介 3 1.2 string的成员 3 1.2.1 append 3 1.2.2 assign 4 1.2.3 at 4 1.2.4 begin 5 1.2.5 c_str 5 1.2.6 capacity 5 1.2.7 clear 6 1.2.8 compare 6 1.2.9 copy 6 1.2.10...
一、 C++的string的使用 4 1.1 C++ string简介 4 1.2 string的成员 4 1.2.1 append 4 1.2.2 assign 5 1.2.3 at 5 1.2.4 begin 6 1.2.5 c_str 6 1.2.6 capacity 6 1.2.7 clear 7 1.2.8 compare 7 1.2.9 copy 7 1.2.10...
wince上各种类型转换特别是字符串是很头疼的,这个类是项目用的, 每个都测试好用,使用静态方法,直接引用后,写【::cv::就可以用】 typedef int u32; //转换类,所有的转换函数在这里静态 2是to的意思 //cs:...
C++开发中经常遇到的中英文字符串表示(string,wstring)类型之间的转换。
里面有S7.Net.dll以及使用说明英文版的,不用区网上下载了。实现C#连接PLC1200,并读写DB块数据。项目工程师完整的,可以直接...更新:内部添加sharp7连接PLC增加读写bool变量,增加读PLC string类型,Wstring类型。
以下是对wchar_t,char,string,wstring之间的相互转换进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
地三个参数为可选的输入参数,输入扩展名信息,扩展名格式为(.cpp, *.cpp, cpp)三者都可,大小写不区分,如果为空则输出目录下的所以文件,默认是输出所有文件 第四个参数为可选的输入参数,表明是否递归,如果为...
代码如下: #ifndef USE_H_ #define USE_H_ #include #include #include <string> using namespace std; class CUser { public: CUser(); virtual~ CUser(); char* WcharToChar(const wchar_t* wp); ...
模块::字符串 从存储库中尝试 git clone https://github.com/Wandalen/wString cd wString npm install node sample/trivial/Sample.s 添加到您的项目 npm add 'wstring@alpha'
C++程序员编码过程中经常会使用string(wstring)类,你是否思考过它的内部实现细节。比如这个类的迭代器是如何实现的?对象占多少字节的内存空间?内部有没有虚函数?内存是如何分配的?构造和析构的成本有多大?笔者...
std::wstring ConverANSI2Unicode(const std::string str); std::wstring ConverUTF82Unicode(const std::string str); std::string ConverUnicode2UTF8(const std::wstring str); std::string ConverUnicode2ANSI...
在UNICODE中:CString str = L“ Test”; std :: wstring ws(str); std :: string s; s.assign(ws.begin(),ws.end());
wstring string2Wstring(string sToMatch) { #ifdef _A_WIN int iWLen = MultiByteToWideChar( CP_ACP, 0, sToMatch.c_str(), sToMatch.size(), 0, 0 ); // 计算转换后宽字符串的长度。(不包含字符串结束符) ...