把字符串写入文件中,编码怎么才能为UTF-8格式写入?

时间:2023-01-05 21:59:07
如题:
 我用 fp = fopen(fileName, "w");
 但得到的文件编码格式不是 UTF-8 , 在写之前如何设置??

14 个解决方案

#1


你用的什么系统,如果你用的是linux系统的话,可以调用iconv函数完成内码的转换。然后再写文件。

#2


系统是 WINDOWS XP

能给点代码吗?具体点的

#3


写文件的时候 写入 const char *  串 ....

在读取的时候进行判断读取的内容和长度 ....

#4


在读取的时候需要多做一些工作进行判断一下,
防止读取半个字符 ....

#5


文件都是按照字节从物理设备读写的,处理编码格式一般在你读入或写前的内存缓冲区内进行

#6


我是要用UTF-8格式写入进文件。

怎么在写入前判断,能给点代码参考吗?

#7


char mulStr[6] = "hello";
WCHAR wdStr[12];
MultiByteToWideChar(CP_UTF8,0,mulStr,5,wdStr,10);

#8


学习

#9


powersuite(套套)  
 
char mulStr[6] = "hello";
WCHAR wdStr[12];
MultiByteToWideChar(CP_UTF8,0,mulStr,5,wdStr,10);

这些要包含哪个头文件?
MultiByteToWideChar()的参数代表什么?

  
 

#10


msdn搜索一下MultiByteToWideChar帮助,有说明,这种转换我也没实际用过,还不知道行不行,你试一试看

#11


第一步:包含头文件
#include "comdef.h"
第二步:
char *str1="了";
_bstr_t str=str1;
WCHAR *str2=str;
第三步:str2就是你要的Unicode

#12


楼上:
    C 里好象不包括 #include "comdef.h" 吧,我用了会提示如下:

c:\program files\microsoft visual studio\vc98\include\comdef.h(17) : fatal error C1189: #error :  Native Compiler support only available in C++ compiler
Error executing cl.exe.

#13


是否写成 utf8 与你写入时有关,与打开文件时无关。

首先需要搞清楚,你所说的要写入的 "字符串" 是 char[] 还是 wchar_t[]

如果你现有 char[],那么要看你这个 char[] 是不是 utf8 格式,否则需要进行转码

如果你现有 wchar_t[],那么,可以使用

setlocale(".utf8")
wprintf()

的方法来写入,或者转化成 utf8 的 char[] 来写入。

如果大家说得搂主云里雾里的,那么请搂主先看一篇文章:(推荐)
http://www.regexlab.com/zh/encoding.htm

#14


学习一下

#1


你用的什么系统,如果你用的是linux系统的话,可以调用iconv函数完成内码的转换。然后再写文件。

#2


系统是 WINDOWS XP

能给点代码吗?具体点的

#3


写文件的时候 写入 const char *  串 ....

在读取的时候进行判断读取的内容和长度 ....

#4


在读取的时候需要多做一些工作进行判断一下,
防止读取半个字符 ....

#5


文件都是按照字节从物理设备读写的,处理编码格式一般在你读入或写前的内存缓冲区内进行

#6


我是要用UTF-8格式写入进文件。

怎么在写入前判断,能给点代码参考吗?

#7


char mulStr[6] = "hello";
WCHAR wdStr[12];
MultiByteToWideChar(CP_UTF8,0,mulStr,5,wdStr,10);

#8


学习

#9


powersuite(套套)  
 
char mulStr[6] = "hello";
WCHAR wdStr[12];
MultiByteToWideChar(CP_UTF8,0,mulStr,5,wdStr,10);

这些要包含哪个头文件?
MultiByteToWideChar()的参数代表什么?

  
 

#10


msdn搜索一下MultiByteToWideChar帮助,有说明,这种转换我也没实际用过,还不知道行不行,你试一试看

#11


第一步:包含头文件
#include "comdef.h"
第二步:
char *str1="了";
_bstr_t str=str1;
WCHAR *str2=str;
第三步:str2就是你要的Unicode

#12


楼上:
    C 里好象不包括 #include "comdef.h" 吧,我用了会提示如下:

c:\program files\microsoft visual studio\vc98\include\comdef.h(17) : fatal error C1189: #error :  Native Compiler support only available in C++ compiler
Error executing cl.exe.

#13


是否写成 utf8 与你写入时有关,与打开文件时无关。

首先需要搞清楚,你所说的要写入的 "字符串" 是 char[] 还是 wchar_t[]

如果你现有 char[],那么要看你这个 char[] 是不是 utf8 格式,否则需要进行转码

如果你现有 wchar_t[],那么,可以使用

setlocale(".utf8")
wprintf()

的方法来写入,或者转化成 utf8 的 char[] 来写入。

如果大家说得搂主云里雾里的,那么请搂主先看一篇文章:(推荐)
http://www.regexlab.com/zh/encoding.htm

#14


学习一下