当前位置: 技术问答>linux和unix
字符集转换(iconv)出错求教
来源: 互联网 发布时间:2017-03-01
本文导语: #include #include #include #include #include #include #define S 2000 void convert(const char *fromset,const char *toset,char *from,int from_len,char *to,int to_len) { printf("%s is to be converted!n",from); iconv_t cd,cdd; cd=iconv_open(toset,fromset); ch...
#include
#include
#include
#include
#include
#include
#define S 2000
void convert(const char *fromset,const char *toset,char *from,int from_len,char *to,int to_len)
{
printf("%s is to be converted!n",from);
iconv_t cd,cdd;
cd=iconv_open(toset,fromset);
char **from2=&from;
char **to2=&to;
if(iconv(cd,from2,&from_len,to2,&to_len)==-1)
printf("Convert fail!n");
else
printf("Convert success!n");
iconv_close(cd);
return ;
}
int main()
{
char from[]="橞"; /*如果换成“你好”就可以成功?*/
char to[S];
convert("GB2312","UTF8",from,strlen(from),to,S); //把gb2312转换成utf8
printf("%sn",to);
return 0;
}
貌似遇到有些生僻字用那函数转换会出错,哪位朋友遇到过?紧急求教!
|
最关键的是"橞"根本就不是GB2312, 改成GB18030试试。
|
你用 locale 看看本地设置是什么,一般来说都是 UTF-8,所以:
char from[]="橞" ;
貌似本来 from 就是 UTF-8 字符,如果按 gb2312 来转应该就会报错吧
char from[]="橞" ;
貌似本来 from 就是 UTF-8 字符,如果按 gb2312 来转应该就会报错吧
|
汗, utf8源码文件里里写一个"橞", 你知道是哪3个字节吗?
这三个字节你怎么就当作GBK了?
[User:root Time:21:11:31 Path:/home/liangdong/c]$ od -t x1 data.txt
0000000 e6 a9 9e 0a
0000004
[User:root Time:21:11:37 Path:/home/liangdong/c]$ cat data.txt
橞
这三个字节你怎么就当作GBK了?
|
同意3楼的,gb2312表示的汉字很少,试试 GBK 或 gb18030
|
对,很多人不注意gb2312是有范围的
|
你的“橞”字是写在源代码文件里的,所以也得注意你的这个源代码文件的编码格式!
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。