unicode文件处理

1.unicode文件的打开必须用rb模式。

3.wchar_t str[100] = { 0 }; 这个占200个字节。

2.宽字符对应的处理

  • fgetc fgetwc
  • fputc fputwc
  • fgets fgetws
  • fputs fputws
  • fprintf fwprintf
  • fscanf fwscanf
  • fread ,fwrite

3.操作:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include<locale.h>

void main1()
{

    FILE *pf = fopen("C:\\Users\\yincheng01\\Desktop\\QQ-腾讯通讯录.txt", "rb");
    while (!feof(pf))
    {
        char ch = fgetc(pf);
        putchar(ch);

    }
    fclose(pf);

    system("pause");
}

void main2()
{
    setlocale(LC_ALL, "zh-CN");
    FILE *pfr = _wfopen(L"C:\\Users\\yincheng01\\Desktop\\QQ-腾讯通讯录.txt", L"rb");
    FILE *pfw = _wfopen(L"C:\\Users\\yincheng01\\Desktop\\QQc.txt", L"wb");
    while (!feof(pfr))
    {
        wchar_t ch = fgetwc(pfr);//获取宽字符
        fputwc(ch, pfw);
        putwchar(ch);//显示宽字符

    }
    fclose(pfr);
    fclose(pfw);
    system("C:\\Users\\yincheng01\\Desktop\\QQc.txt");

    system("pause");
}

void main3()
{
    setlocale(LC_ALL, "zh-CN");
    FILE *pfr = _wfopen(L"C:\\Users\\yincheng01\\Desktop\\QQ-腾讯通讯录.txt", L"rb");
    FILE *pfw = _wfopen(L"C:\\Users\\yincheng01\\Desktop\\QQ.txt", L"wb");
    while (!feof(pfr))
    {
        wchar_t wstr[256] = { 0 };
        fgetws(wstr, 256, pfr);
        wprintf(L"%ls",wstr);
        fputws(wstr, pfw);//宽字符写入

    }
    fclose(pfr);
    fclose(pfw);
    system("C:\\Users\\yincheng01\\Desktop\\QQ.txt");
    system("pause");
}

void main()
{
    setlocale(LC_ALL, "zh-CN");
    //wprintf(L"%s", L"hello天朝");
    wchar_t wstr[100] = { 0 };
    fwscanf(stdin, L"%s", wstr);
    fwprintf(stdout, L"%s%d%s", L"海华", 100,wstr);

    system("pause");
}
时间: 2024-10-13 05:25:48

unicode文件处理的相关文章

读写UTF-8、Unicode文件(加上了文件头,貌似挺好用)

conf配置文件一些为UTF-8和Unicode格式,这样便可良好的支持多语言,从网上查阅资料后,将读写UTF-8.Unicode文件写了几个最精简的函数,更新后加了是否写文件头的功能,以适应更多需要,注意函数未加防错保护. 参数说明:f文件名.s写入或读取的文件内容.hs文件头.b是否读写文件头. UTF-8文件写入函数 代码 procedure SaveUTF(f:string;s:string;b:boolean=true);var  ms:TMemoryStream;  hs:Strin

paip.utf-8,unicode编码的本质输出unicode文件原理 python

#别的语言,java php都是unicode,走十python不一样. #enddef #todo write to unicode encode fileHandle = open ( r"c:\fmtSmpEnRst.txt", 'w',encoding="UTF-16" ) #todox utf8 not decode...now  UTF-16是Unicode lines=file2list(f, encode="utf-16") 作者

非Unicode工程读取Unicode文件

MyUnicodeReader.h #pragma once /************************************************************************/ /* 在“多字节字符集”属性的工程中读取Unicode文件 ** -----------------------------------注意------------------------------------------------------- ** -------------一定

Java读取Unicode文件(UTF-8等)时碰到的BOM首字符问题,及处理方法

在Windows下用文本编辑器创建的文本文件,如果选择以UTF-8等Unicode格式保存,会在文件头(第一个字符)加入一个BOM标识. 这个标识在Java读取文件的时候,不会被去掉,而且String.trim()也无法删除.如果用readLine()读取第一行存进String里面,这个String的length会比看到的大1,而且第一个字符就是这个BOM. 这种情况会造成一些麻烦,比如在读取ini文件的时候,如果想判断第一行是不是以"["开头就无法正确判断. 幸好,Java在读取Un

fstream读写UNICODE文件

今天遇到要处理UNICODE文件的情况,网上找了一圈都是读取出字节,再转的,这个不方便啊!想起了有codecvt这么个东西,顺藤摸瓜,找到了方法. locale utf16(locale(""), new codecvt_utf16<wchar_t, 0x10ffff, little_endian>); wifstream fin("Module.rc"); wofstream fout("Module.rc.tt", ios_bas

【代码备忘】C++ fstream 读写 unicode 文件

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 所谓的unicode文件,无非就是在文件头部插入了 0xFFFE的标志...读写的时候对应的读写 就可以了. namespace fileStream { bool readFile_Unicode( const string &file ,wstring &destWstring) { destWstring.clear(); //setlocale(LC_ALL,"

java读取unicode文件

主要介绍使用java来读取txt文本文件,且每次读取2个字节,也就是采用unicode编码的文本. FileMain package com.test.filetest; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class FileMain { /** * @param args * @throw

Java Core 学习笔记——3.char/Unicode/代码点/代码单元

通用字符集(UCS) UCS是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所制定的标准字符集. UCS包括了其他所有的字符集(包含了已知语言的所以字符). ISO/IEC 10646定义了一个31位的字符集(首位恒定为0,占用4字节). Unicode(万国码.国际码.统一码.单一码) 编码方式: Unicode编码空间从“U+0000”到“U+10FFFF”(共1112064个码位),Unicode的编码空间划为17个平面,每个平面包含216(65536)个码位.17

Delphi读写UTF-8、Unicode格式文本文件

// UTF-8文件写入函数procedure SaveUTFFile(const FileName: string; S: string; WriteHeader: Boolean = True);var  MemStream: TMemoryStream;  HeaderStr: String;begin  if S = '' then Exit; MemStream := TMemoryStream.Create;  try    if WriteHeader then    begin