linux c语言 utf8转gbk,GBK(gb2312)和UTF-8互转(转载)

本文摘自:http://my.huhoo.net/archives/2012/10/gbkutf8.html

非常感谢原文作者。

具体需求是这样,嵌入式环境,sh架构的,厂商提供的SDK中的iconv库不够全,不支持gb2312,也不支持gbk,导致我在实现utf-8转gb2312编码时不能通过标准iconv库完成。

最终找到两个解决办法。

1. 使用网上流传比较广泛的preload技术,从gnu网站上download来libiconv源代码,然后交叉编译,得到preload_libiconv.so,然后在板子启动时就加入export LD_PRELOAD=XXX,XXX是preload_libiconv.so文件的绝对路径,那么其他程序调用iconv库中的函数时,系统就会去LD_PRELOAD指定的so文件中去查询对应的函数,如果找不到才会去glibc.so中查找,这样就巧妙的相当于更新了glibc.so。

顺便提一下交叉编译方式:

./configure --prefix=$PWD/out --host=sh4-linux CC=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-gcc

--host指定的是运行二进制程序的设备的架构和操作系统,其实就是开发板的。

所以这里填写的就是sh4(开发板的CPU架构)-linux(开发板使用的操作系统)

CC指定厂商提供的SDK中编译链的绝对路径,大部分情况下就是xxx-xxx-gcc了,

所以这里也是

sh4(开发板的CPU架构)-linux(开发板使用的操作系统)-gcc(gcc编译套件,当然也有可能是g++)

2. 第一种方法不是很好,所以我继续找方法,终于找到了那位作者自己实现的gbk和utf-8之间互转的C语言函数。

因为gbk是兼容gb2312的,所以我之前一直纠结于去搜索关键词 utf-8 to gb2312 in C,导致没找到合适的参考。

大多数情况下,你不用会所有的东西,因为咱们都是站在巨人的肩膀上,但是基础越扎实越好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值