社区
Linux/Unix社区
帖子详情
请教,在64位机AIX系统,使用iconv()函数转换UTF-8到GBK失败,是什么原因呢?如何解决?
hongming1129
2010-04-20 01:14:20
请教,在64位机AIX系统,使用iconv()函数转换UTF-8到GBK失败,是什么原因呢?如何解决?
...全文
1058
8
打赏
收藏
请教,在64位机AIX系统,使用iconv()函数转换UTF-8到GBK失败,是什么原因呢?如何解决?
请教,在64位机AIX系统,使用iconv()函数转换UTF-8到GBK失败,是什么原因呢?如何解决?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rain820804
2011-01-21
打赏
举报
回复
怎么看不了回复
hongming1129
2010-04-21
打赏
举报
回复
散分啦
hongming1129
2010-04-21
打赏
举报
回复
谢谢楼上的提醒。
检查了一下,果然是传入的参数不兼容。
调用iconv(cd, &inbuf, inlen, outbuf, outlen),传入的参数inlen、outlen均在前面定义成了int型。正确的定义应该是long、unsigned long、size_t。
修改数据定义语句为:
size_t inlen, outlen;
函数原型:
size_t iconv(iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
size_t类型在sys/types.h中的定义:
typedef unsigned long size_t;
在旧的C语言库中,size_t类型在sys/types.h中的定义:
typedef unsigned int size_t;
习惯了,直接就在前面定义了int inlen, outlen。
良好的习惯应该使用库中定义的数据类型。或者应该要了解库中定义的基本数据类型。至少在出现这种问题的时候,会从这个角度着手解决。
再次感谢!
tufei1129
2010-04-21
打赏
举报
回复
perror("iconv"),结果是“invalid wide charactor”。
在调用iconv()时,字长不够,可能传入的参数类型不兼容。尤其时在64位机上,long的字长是8,int的字长是4;在32位机上long的字长是4,int的字长也是4。在32位机上,int、long是可以通用的,在64位机上,用long的地方,传了int的数据做参数就会报“invalid wide charactor”,字长不够。
检查下传入的参数是否符合。
hongming1129
2010-04-20
打赏
举报
回复
perror("iconv"),结果是“invalid wide charactor”。
hongming1129
2010-04-20
打赏
举报
回复
说明下,我使用的是系统自带的库。并未自己加装一个libiconv。
ivonc_open()调用正常,但是在调用iconv时返回-1。
mymtom
2010-04-20
打赏
举报
回复
楼主, 上代码!
brookmill
2010-04-20
打赏
举报
回复
http://bbs3.chinaunix.net/archiver/tid-1227459.html
lib
iconv
-1.14.zip
lib
iconv
-1.14.zip
iconv
字符编码
转换
全攻略(转)
4、代码页(codepage),Unicode是一个世界统一的标准,也就是说,如果一个文本是用Unicode方式编码的,那么它可以同时显示中文、日文、阿拉伯文等等,并且是在任何
系统
上都可以正常显示的。UTF-7,
UTF-8
,UTF-16都是比较常见的编码方式。比如gb2312-->unicode的转化就是
GBK
(或者是gb18030 cp936,我们之前说过,大多数情况这些是等价的)到ucs-2(或者是utf-16,如果文本信息中没有BOM就要特别指定utf-16le或是utf-16be)的转化。
c语言
iconv
函数
,lib
iconv
的介绍
查看原文http://www.gnu.org/software/lib
iconv
/由于历史
原因
,国际上的各国文字都是依赖于自己本国语言而编码的。后来,随着Internet的出现和各国之间逐渐频繁的文字交流(比如浏览国外的Web页面),编码之间的
转换
就显得非常重要。这时也出现了一个问题,很多字符在一种编码中出现而没有被另一种编码包含。为了
解决
这种编码带来的混乱,人们发明了Unicode编码。它是所有...
aix
服务器文件名乱码,java
aix
文件名乱码
java
aix
文件名乱码[2021-02-03 13:32:18]简介:php下fopen中文文件名乱码的
解决
办法:首先对文件名进行编码,代码为【$fileName =
iconv
('
UTF-8
', '
GBK
', $fileName)】;然后保存原先的中文文件名;最后再通过文php上传文件名乱码的
解决
办法:首先打开“Upload.html”文件;然后添加语句“enctype="multip...
linux
gbk
英文转unicode,linux unicode to
gbk
or
gbk
to unicode
1.关于C程序的汉字
转换
问题。//================================================================================================通用的方法:linux中有
iconv
库,直接
使用
库
函数
,能够进行各种编码
转换
:#include#defineOUTLEN255#include#includeint...
Linux/Unix社区
23,216
社区成员
74,539
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章