用C语言写UTF-8编码的文件
来源:互联网 发布:淘宝网总裁 编辑:程序博客网 时间:2024/04/27 23:50
原文地址:http://blog.csdn.net/zaffix/article/details/7217701
为实现用C语言写UTF-8编码的文件,测试了以下两种情况。
第一种情况,为 fopen 指定一个编码,然后写入 wchar_t 字符串,最终写入的文件就是UTF-8编码的了,原理不清楚,估计是 fwrite 时对 wchar_t 做了编码转换(如果写入 char 的话就会乱码)。
- #include <stdio.h>
- #include <tchar.h>
- int main()
- {
- FILE* fp = fopen("test.txt", "wt+,ccs=UTF-8");
- wchar_t* s = _T("hello, 你好!");
- fwrite(s, sizeof(wchar_t), wcslen(s), fp);
- fclose(fp);
- return 0;
- }
第二种情况,先将字符串编码转换为UTF-8格式的,然后再写入。
- #include <stdio.h>
- #include <string.h>
- #include <Windows.h>
- int main()
- {
- FILE* fp = fopen("test.txt", "wb+");
- // 写入UTF-8的BOM文件头
- char header[3] = {(char)0xEF, (char)0xBB, (char)0xBF};
- fwrite(header, sizeof(char), 3, fp);
- char* s = "hello, 你好!";
- wchar_t wc[256];
- // 将ANSI编码的多字节字符串转换成宽字符字符串
- int n = MultiByteToWideChar(CP_ACP, 0, s, strlen(s), wc, 256);
- if ( n > 0 )
- {
- wc[n] = 0;
- char mb[1024];
- // 将宽字符字符串转换成UTF-8编码的多字节字符串
- n = WideCharToMultiByte(CP_UTF8, 0, wc, wcslen(wc), mb, 1024, NULL, NULL);
- if ( n > 0 )
- {
- mb[n] = 0;
- fwrite(mb, sizeof(char), strlen(mb), fp);
- }
- }
- fclose(fp);
- return 0;
- }
0 0
- 用C语言写UTF-8编码的文件
- 用C语言写UTF-8编码的文件
- 用指定的编码(如UTF-8) 写文件
- Linux Unicode 编程--C语言如何使用/生成UTF-8编码格式的文件
- [转]FSO写UTF-8编码文件
- python3 以utf-8编码写文件
- java写utf-8编码的csv文件,用excel2007打开乱码
- UTF-8转Unicode 编码 C语言
- 无BOM的条件下C语言判断一个文件是否为UTF-8编码代码(windows,linux通用)
- C语言实现windows1251编码转utf-8编码
- dom4j写文件的编码(UTF-8)问题(主要指中文)的解决
- Python write 写文件编码格式指定为utf-8
- python写中文utf-8编码csv文件
- 用c语言写的base64编码解码函数!
- 用ASP读写UTF-8编码的文件
- Python文件的编码注释 utf-8
- Learning Python 016 写文件时,将其用指定的编码方式保存(比如:UTF-8无BOM编码方式)
- C语言 获取汉字unicode和utf-8编码
- Linux vi命令用法
- 什么是Programmatic Marketing?
- Xcode快捷键
- maven编译mule3.x 错误s
- IOS 中数组、集合、字典的使用(NSArray, NSSet, NSDictionary)
- 用C语言写UTF-8编码的文件
- IEnumerable和IEnumerator区别有哪些
- 如何页的事情.2N及帐破
- 移动端网页设计经验与心得
- jstl标签竟然还与tomcat的版本有关
- D3DXMatrixTranslation D3D中的平移函数
- 个人备份
- mac终端命令大全介绍
- linux下vi命令大全