C语言如何生成UTF-8编码格式的文件

环境:hp-unix利用c程序向txt文件中写入数据,写出的文件编码格式是ANSI格式的。用记事本打开后可以另存为UTF-8格式的。环境变量LC_ALL=zh_CN.ut... 环境:hp-unix
利用c程序向txt文件中写入数据,写出的文件编码格式是ANSI格式的。用记事本打开后可以另存为UTF-8格式的。环境变量LC_ALL=zh_CN.utf8。
请问如何在程序中控制,使之生成的文件就是UTF-8编码格式的?
to dbzhang800:程序源代码保存为 utf8 格式后编译试试呢----------编译报错“Error 92: "./xxxx.cpp", line 1 # Character '? (value -17) was unexpected.”。
更正:利用c++编写。
to wxw12345: 我已经将该用户的系统环境变量设置为utf8.但是仍然无法改变程序生成的文件的编码格式。
展开
 我来答
元宝趣学
2008-09-02 · TA获得超过1102个赞
知道小有建树答主
回答量:734
采纳率:100%
帮助的人:592万
展开全部
下面的Unix下函数可以会帮到你

getenv(取得环境变量内容)
相关函数 putenv,setenv,unsetenv
表头文件 #include<stdlib.h>
定义函数 char * getenv(const char *name);
函数说明 getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为name=value。
返回值 执行成功则返回指向该内容的指针,找不到符合的环境变量名称则返回NULL。
范例 #include<stdlib.h>
mian()
{
char *p;
if((p = getenv(“USER”)))
printf(“USER=%s\n”,p);
}

执行 USER = root

putenv(改变或增加环境变量)
相关函数 getenv,setenv,unsetenv
表头文件 #include4<stdlib.h>
定义函数 int putenv(const char * string);
函数说明 putenv()用来改变或增加环境变量的内容。参数string的格式为name=value,如果该环境变量原先存在,则变量内容会依参数string改变,否则此参数内容会成为新的环境变量。
返回值 执行成功则返回0,有错误发生则返回-1。
错误代码 ENOMEM 内存不足,无法配置新的环境变量空间。
范例 #include<stdlib.h>
main()
{
char *p;
if((p = getenv(“USER”)))
printf(“USER =%s\n”,p);
putenv(“USER=test”);
printf(“USER+5s\n”,getenv(“USER”));
}

执行 USER=root
USER=root

setenv(改变或增加环境变量)
相关函数 getenv,putenv,unsetenv
表头文件 #include<stdlib.h>
定义函数 int setenv(const char *name,const char * value,int overwrite);
函数说明 setenv()用来改变或增加环境变量的内容。参数name为环境变量名称字符串。
参数 value则为变量内容,参数overwrite用来决定是否要改变已存在的环境变量。如果overwrite不为0,而该环境变量原已有内容,则原内容会被改为参数value所指的变量内容。如果overwrite为0,且该环境变量已有内容,则参数value会被忽略。
返回值 执行成功则返回0,有错误发生时返回-1。
错误代码 ENOMEM 内存不足,无法配置新的环境变量空间
范例 #include<stdlib.h>
main()
{
char * p;
if((p=getenv(“USER”)))
printf(“USER =%s\n”,p);
setenv(“USER”,”test”,1);
printf(“USER=%s\n”,getenv(“USEr”));
unsetenv(“USER”);
printf(“USER=%s\n”,getenv(“USER”));
}

执行 USER = root
USER = test
USER = (null)
高金山
2008-09-09 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1651万
展开全部
哎呀。都是干嘛的啊?很简单的啊。

你用二进制的方式写文件,不就行了啊。
写文件的时候,把要写入的数据,用一个函数转换程utf8编码的数据,就ok了啊
虽然我没在linux下编过,但每个系统,每个开发环境,肯定提供了 编码转换的函数库 的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
2015-10-30 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:860万
展开全部
1、用二进制的方式写文件。写文件的时候,把要写入的数据,用一个函数转换程utf8编码的数据,就好了。
2、更简单的方法:
在linux下使用 这个脚本可以批量成为utf8
#!/bin/sh
#Convert all xml config files to EUC
for file in $(find . -name '*.xml') ;
do
if [ -f $file ] ; then
#echo Converting to euc: $file
nkf -utf8 $file > temp_file
mv -f temp_file $file
fi
done
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
goon1023
2008-09-09 · TA获得超过1564个赞
知道小有建树答主
回答量:536
采纳率:0%
帮助的人:471万
展开全部
如果你要在linux下使用 这个脚本可以让你批量成为utf8
#!/bin/sh
#Convert all xml config files to EUC

for file in $(find . -name '*.xml') ;
do
if [ -f $file ] ; then
#echo Converting to euc: $file
nkf -utf8 $file > temp_file
mv -f temp_file $file
fi
done

如果你是用弄utf8文件的话 使用emeditor free 右下角 很好用的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JimiXu
2008-09-02 · TA获得超过410个赞
知道小有建树答主
回答量:1010
采纳率:0%
帮助的人:0
展开全部
自动生成我不会,笨办法就是自己写一个编码器,转换成utf-8格式,下面是utf-8的介绍,希望有帮助:
http://baike.baidu.com/view/25412.htm
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式