zoukankan      html  css  js  c++  java
  • 分享一些经验,关于怎么创建一个unicode文本文件,并写入unicode文本(比如中文)

    第一,要使用fwprintf,例如:
    fwprintf( fp, L"%s ", str.c_str() );注意那个str,是wstring str

    第二,打开文件准备写入的时候,要这样写:
    fp = _wfopen( L"bad.txt", L"a+,ccs=UNICODE" );注意那个L"a+,ccs=UNICODE",表示用UNICODE方式打开。ccs=UNICODE这个写法很不常用

    第三,也是最奇怪的,如果是写入一个已经存在的UNICODE文本文件,比如你先用记事本新建文件,然后另存为,选择编码方式为UNICODE,那么上述代码工作正常。

    但是,如果是新建一个UNICODE文本文件,则即使你这样写:fp = _wfopen( L"error.txt", L"w+,ccs=UNICODE" );

    结果你会惊讶地发现,这个新建的文本文件,还是ANSI的编码,所以此后再通过fwprintf写入也不会对。

    最后我发现必须这样写:
    WORD wSignature = 0xFEFF;

    FILE* fp = _wfopen( L"error.txt", L"w+" );
    fwrite( &wSignature, 2, 1, fp );
    fclose( fp );

    0xFEFF是UNICODE文本文件开头的BOM头,只有这样才能一下子新建一个UNICODE文本文件。此后再通过fwprintf写入,就一切OK了。

    最后,_wfopen和fopen,其实功能上没有任何区别,唯一只是_wfopen接收的参数是wchar_t类型的。

  • 相关阅读:
    python-44-初识队列
    python-43-进程锁/信号量/事件
    python-42-Process多进程
    python-41-初识hmac与socketserver模块
    python-40-初识socket与struct
    python-39-hashlib与logging模块
    python-38-用于面向对象的内置函数
    python-37-各种反射
    python-36-封装与面向对象函数
    python-35-多态与初识封装
  • 原文地址:https://www.cnblogs.com/snowraindy2014/p/3616328.html
Copyright © 2011-2022 走看看