
GLIB_LIBS=`pkg-config --libs glib-2.0 gthread-2.0`
/*
* writed by kf701
*/
#include <stdio.h>
#include <glib.h>
int main(int argch,char *argv[])
{
GError * ge = NULL
char inbuf[20*1024]
FILE *in = fopen(argv[1],"r")
int size = fread( inbuf, 1, sizeof(inbuf), in )
printf( "file size = %d\n", size )
int outlen = 0, readlen = 0
char *out = g_convert( inbuf, size, "UTF-8", "GBK", &readlen, &outlen, &ge )
printf( "convert outlen=%d , readlen = %d\n", outlen, readlen )
if( NULL == out )
{
printf("out is NULL,err=%s\n", ge->message)
exit(0)
}
char output_file[128]
sprintf( output_file, "utf8-%s", argv[1] )
FILE *of = fopen( output_file, "w" )
int n = fwrite( out, 1, outlen, of )
printf( "fwrite n = %d\n", n)
}
调用一下glib库.就好了
不知道你是不是在代码里面自己转换,或者你的目的是什么?但是,汉字转码,不是增加编译选项 -finput-charset=UTF-8 -fexec-charset=UTF-8 就可以了吗? 前一个是代码编辑的时候的编码格式,后一个是执行时显示的编码格式。
通常编辑的时候格式设置为ANSI,一般编译后可以直接显示。
出现这种情况的原因为两种 *** 作系统的中文压缩方式不同,在windows环境中中文压缩一般为gbk,而在linux环境中为utf8,这就导致了在windows下能正常显示txt文件在linux环境下打开呈现了乱码状态。
解决方法:在linux用iconv命令,输入命令如下
iconv
-f
gbk
-t
utf8
file.pdf
>
file.pdf.utf8
此时会重生一file.utf8文件,打开之后就能正常显示中文
linux系统下修改语言配置方法有:
法一:修改/etc/profile文件,增加export
LANG=zh_CN.GB18030
法二:修改/etc/sysconfig/i18n文件,将
#LANG="en_US.UTF-8"
#SUPPORTED="en_US.UTF-8:en_US:en"
#SYSFONT="latarcyrheb-sun16"
改为
LANG="zh_CN.UTF-8"
SUPPORTED="zh_CN:zh:en_US.UTF-8:en_US:en:zh_CN.GB18030"
SYSFONT="latarcyrheb-sun16"
/etc/profile:
为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
/etc/sysconfig/i18n
这里存放的是系统的区域语言设置
LANG
表明你当前系统的语言环境变量设置
,这里是
zh_CN.GB18030
SUPPORTED
表明系统预置了那些语言支持
,不在项目中的语言不能正常显示
SYSFONT
定义控制台终端字体,你文本登录的时候显示的字体是
latarcyrheb-sun16
I18N
是
internationalization
的缩写形式,意即在
i
和
n
之间有
18
个字母,本意是指软件的“国际化”.I18N支持多种语言,不过同一时间只能是英文和一种选定的语言,例如英文+中文、英文+德文、英文+韩文等等;
如果在SCRT上 *** 作时中文乱码,可依次点击options--session
options--appearance,选择character
encoding为UTF-8
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)