linux iconv方法的使用

今天同事遇见一个比较怪异的问题:

使用iconv方法进行编码转换。在windows平台下面可以正常的工作(本地环境使用的win7),但是在linux环境下面iconv总是返回false(测试环境使用的linux)。

参考phpinfo的信息,iconv模块也已经正确加载。

google一下。原来才知道,原来在linux版本下iconv这个方法还是有点小问题的。

csdn上的一个网友给出的解决方案为:

一种方法是把iconv换成 mb_convert_encoding 
另一种方法是修改iconv 的实现,从glibc 改为libiconv
搞了半天,烦躁!
有朋友碰到的话,也可以这么解决了

按照该网友提供的第一个方法,将iconv方法修改为使用mb_convert_encoding,搞定。。

多谢该网友提供的解决方案。


参考网站:

http://topic.csdn.net/u/20090401/21/814cf7aa-f07c-4e3d-8d66-dc77f26b2d40.html

http://hi.baidu.com/xu_jack/blog/item/93e493ecba98022c269791bb.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式 Linux使用 iconv 进行字符编码转换的步骤如下: 1. 包含头文件:在源代码中包含 `<iconv.h>` 头文件,这是进行字符编码转换所需的函数和数据结构的声明。 2. 打开转换句柄:使用 `iconv_open` 函数打开一个字符编码转换句柄。该函数的原型为: ``` iconv_t iconv_open(const char* tocode, const char* fromcode); ``` 其中 `tocode` 是目标编码,`fromcode` 是源编码。可以使用 `iconv --list` 命令查看系统支持的编码。 3. 设置转换选项:可以通过 `iconvctl` 函数设置一些转换选项,例如忽略无法转换的字符或错误处理策略。这一步骤可以根据需求来选择,不是必须的。 4. 初始化转换状态:使用 `iconv` 函数初始化字符编码转换状态。该函数的原型为: ``` size_t iconv(iconv_t cd, char** inbuf, size_t* inbytesleft, char** outbuf, size_t* outbytesleft); ``` 其中 `cd` 是之前打开的转换句柄,`inbuf` 是输入缓冲区指针,`inbytesleft` 是输入缓冲区大小,`outbuf` 是输出缓冲区指针,`outbytesleft` 是输出缓冲区大小。 5. 进行编码转换:使用 `iconv` 函数进行字符编码转换。反复调用该函数,直到转换完成或出错。每次调用后,输入缓冲区的指针和大小会更新,输出缓冲区的指针和大小也会更新。 6. 关闭转换句柄:使用 `iconv_close` 函数关闭字符编码转换句柄。该函数的原型为: ``` int iconv_close(iconv_t cd); ``` 其中 `cd` 是之前打开的转换句柄。 以上是使用 iconv 进行字符编码转换的基本步骤。在实际使用中,你需要根据具体的需求来设置输入和输出缓冲区,并根据返回值来处理转换结果或错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值