谢谢
谢谢
小弟的开发平台linux
11 个解决方案
#1
函数 iconv()
查查帮助吧
查查帮助吧
#2
我查了一下iconv,它要有相应的码表支持吧
#3
我刚才度过了
不行
如果要用iconv则要调用iconv_open
但我现在要把这个功能做到一个函数里呀
类型如下函数
int mbcs2utf8(char **des, char *src, int ilen)
{
int inlen, outlen;
iconv_t cd;
size_t n;
inlen = ilen + 1;
if((cd = iconv_open(??????, ??????)) == (iconv_t)-1)
return -1;
if((n = iconv(cd, &src, &inlen, des, &outlen)) == (size_t)(-1))
{
return -1;
}
iconv_close(cd);
return outlen;
}
不行
如果要用iconv则要调用iconv_open
但我现在要把这个功能做到一个函数里呀
类型如下函数
int mbcs2utf8(char **des, char *src, int ilen)
{
int inlen, outlen;
iconv_t cd;
size_t n;
inlen = ilen + 1;
if((cd = iconv_open(??????, ??????)) == (iconv_t)-1)
return -1;
if((n = iconv(cd, &src, &inlen, des, &outlen)) == (size_t)(-1))
{
return -1;
}
iconv_close(cd);
return outlen;
}
#4
help me
谢谢
谢谢
谢谢
谢谢
#5
确认你的系统中有汉字(mbcs)编码库?
#6
没有编码库
但我不知道怎么装
是那个字库呢
还有就是那个
if((cd = iconv_open(??????, ??????)) == (iconv_t)-1)
里面参数我不知道怎么写呀
谢谢
谢谢
实在是谢谢了
但我不知道怎么装
是那个字库呢
还有就是那个
if((cd = iconv_open(??????, ??????)) == (iconv_t)-1)
里面参数我不知道怎么写呀
谢谢
谢谢
实在是谢谢了
#7
应该可以不用这种方式的
应该可以直接做编码转换的吧
那位大哥做过呀
谢谢
谢谢
应该可以直接做编码转换的吧
那位大哥做过呀
谢谢
谢谢
#8
int u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
return CodeConvert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
int CodeConvert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
iconv_t cd;
int rc;
char **pin = &inbuf;
char **pout = &outbuf;
cd = iconv_open(to_charset,from_charset);
if (cd==0)
return -1;
memset(outbuf,0,outlen);
if (iconv(cd, (const char **)pin, (size_t*)&inlen, pout, (size_t*)&outlen)==-1)
return -1;
iconv_close(cd);
return 0;
}
{
return CodeConvert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
int CodeConvert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
iconv_t cd;
int rc;
char **pin = &inbuf;
char **pout = &outbuf;
cd = iconv_open(to_charset,from_charset);
if (cd==0)
return -1;
memset(outbuf,0,outlen);
if (iconv(cd, (const char **)pin, (size_t*)&inlen, pout, (size_t*)&outlen)==-1)
return -1;
iconv_close(cd);
return 0;
}
#9
谢谢
谢谢这位大哥
明天再来写程序了
今天麻烦各位大哥了
谢谢这位大哥
明天再来写程序了
今天麻烦各位大哥了
#10
这么大哥,不好意思
我昨天测试了一下
程序执行到iconv函数时总是要返回-1
我不知道错在哪儿呀
谢谢
谢谢
我昨天测试了一下
程序执行到iconv函数时总是要返回-1
我不知道错在哪儿呀
谢谢
谢谢
#11
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include </usr/include/iconv.h>
#include </usr/include/strings.h>
int CodeConvert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
iconv_t cd;
char **pin = &inbuf;
char **pout = &outbuf;
cd = iconv_open(to_charset,from_charset);
if (cd==0)
return -1;
memset(outbuf,0,outlen);
if (iconv(cd, (const char **)pin, (size_t*)&inlen, pout, (size_t*)&outlen)==-1)
return -1;
iconv_close(cd);
return 0;
}
int u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
return CodeConvert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
int main()
{
char *iput = "abc";
char obuf[128];
int ilen = 3, olen = 0, val;
memset(obuf, 0x00, 128);
val = u2g(iput, ilen, obuf, olen);
fprintf(stderr, "val = %d\n", val);
fprintf(stderr, "obuf = %s\n", obuf, olen);
fflush(stderr);
return 0;
}
#include <stdio.h>
#include <string.h>
#include </usr/include/iconv.h>
#include </usr/include/strings.h>
int CodeConvert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
iconv_t cd;
char **pin = &inbuf;
char **pout = &outbuf;
cd = iconv_open(to_charset,from_charset);
if (cd==0)
return -1;
memset(outbuf,0,outlen);
if (iconv(cd, (const char **)pin, (size_t*)&inlen, pout, (size_t*)&outlen)==-1)
return -1;
iconv_close(cd);
return 0;
}
int u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
return CodeConvert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
int main()
{
char *iput = "abc";
char obuf[128];
int ilen = 3, olen = 0, val;
memset(obuf, 0x00, 128);
val = u2g(iput, ilen, obuf, olen);
fprintf(stderr, "val = %d\n", val);
fprintf(stderr, "obuf = %s\n", obuf, olen);
fflush(stderr);
return 0;
}
#1
函数 iconv()
查查帮助吧
查查帮助吧
#2
我查了一下iconv,它要有相应的码表支持吧
#3
我刚才度过了
不行
如果要用iconv则要调用iconv_open
但我现在要把这个功能做到一个函数里呀
类型如下函数
int mbcs2utf8(char **des, char *src, int ilen)
{
int inlen, outlen;
iconv_t cd;
size_t n;
inlen = ilen + 1;
if((cd = iconv_open(??????, ??????)) == (iconv_t)-1)
return -1;
if((n = iconv(cd, &src, &inlen, des, &outlen)) == (size_t)(-1))
{
return -1;
}
iconv_close(cd);
return outlen;
}
不行
如果要用iconv则要调用iconv_open
但我现在要把这个功能做到一个函数里呀
类型如下函数
int mbcs2utf8(char **des, char *src, int ilen)
{
int inlen, outlen;
iconv_t cd;
size_t n;
inlen = ilen + 1;
if((cd = iconv_open(??????, ??????)) == (iconv_t)-1)
return -1;
if((n = iconv(cd, &src, &inlen, des, &outlen)) == (size_t)(-1))
{
return -1;
}
iconv_close(cd);
return outlen;
}
#4
help me
谢谢
谢谢
谢谢
谢谢
#5
确认你的系统中有汉字(mbcs)编码库?
#6
没有编码库
但我不知道怎么装
是那个字库呢
还有就是那个
if((cd = iconv_open(??????, ??????)) == (iconv_t)-1)
里面参数我不知道怎么写呀
谢谢
谢谢
实在是谢谢了
但我不知道怎么装
是那个字库呢
还有就是那个
if((cd = iconv_open(??????, ??????)) == (iconv_t)-1)
里面参数我不知道怎么写呀
谢谢
谢谢
实在是谢谢了
#7
应该可以不用这种方式的
应该可以直接做编码转换的吧
那位大哥做过呀
谢谢
谢谢
应该可以直接做编码转换的吧
那位大哥做过呀
谢谢
谢谢
#8
int u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
return CodeConvert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
int CodeConvert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
iconv_t cd;
int rc;
char **pin = &inbuf;
char **pout = &outbuf;
cd = iconv_open(to_charset,from_charset);
if (cd==0)
return -1;
memset(outbuf,0,outlen);
if (iconv(cd, (const char **)pin, (size_t*)&inlen, pout, (size_t*)&outlen)==-1)
return -1;
iconv_close(cd);
return 0;
}
{
return CodeConvert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
int CodeConvert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
iconv_t cd;
int rc;
char **pin = &inbuf;
char **pout = &outbuf;
cd = iconv_open(to_charset,from_charset);
if (cd==0)
return -1;
memset(outbuf,0,outlen);
if (iconv(cd, (const char **)pin, (size_t*)&inlen, pout, (size_t*)&outlen)==-1)
return -1;
iconv_close(cd);
return 0;
}
#9
谢谢
谢谢这位大哥
明天再来写程序了
今天麻烦各位大哥了
谢谢这位大哥
明天再来写程序了
今天麻烦各位大哥了
#10
这么大哥,不好意思
我昨天测试了一下
程序执行到iconv函数时总是要返回-1
我不知道错在哪儿呀
谢谢
谢谢
我昨天测试了一下
程序执行到iconv函数时总是要返回-1
我不知道错在哪儿呀
谢谢
谢谢
#11
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include </usr/include/iconv.h>
#include </usr/include/strings.h>
int CodeConvert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
iconv_t cd;
char **pin = &inbuf;
char **pout = &outbuf;
cd = iconv_open(to_charset,from_charset);
if (cd==0)
return -1;
memset(outbuf,0,outlen);
if (iconv(cd, (const char **)pin, (size_t*)&inlen, pout, (size_t*)&outlen)==-1)
return -1;
iconv_close(cd);
return 0;
}
int u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
return CodeConvert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
int main()
{
char *iput = "abc";
char obuf[128];
int ilen = 3, olen = 0, val;
memset(obuf, 0x00, 128);
val = u2g(iput, ilen, obuf, olen);
fprintf(stderr, "val = %d\n", val);
fprintf(stderr, "obuf = %s\n", obuf, olen);
fflush(stderr);
return 0;
}
#include <stdio.h>
#include <string.h>
#include </usr/include/iconv.h>
#include </usr/include/strings.h>
int CodeConvert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
iconv_t cd;
char **pin = &inbuf;
char **pout = &outbuf;
cd = iconv_open(to_charset,from_charset);
if (cd==0)
return -1;
memset(outbuf,0,outlen);
if (iconv(cd, (const char **)pin, (size_t*)&inlen, pout, (size_t*)&outlen)==-1)
return -1;
iconv_close(cd);
return 0;
}
int u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
return CodeConvert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
int main()
{
char *iput = "abc";
char obuf[128];
int ilen = 3, olen = 0, val;
memset(obuf, 0x00, 128);
val = u2g(iput, ilen, obuf, olen);
fprintf(stderr, "val = %d\n", val);
fprintf(stderr, "obuf = %s\n", obuf, olen);
fflush(stderr);
return 0;
}