最近,linux上遇到string为汉字时,需要转码存入到数据库中,将转码的函数及其方法记录一下。

见函数:

头文件是#include <iconv.h>

    //fromcode:源string使用的字符集,如"UTF-8";,对于汉字每个汉字为3个字节存储//tocode:目的string使用的字符集,如"GB2312";,对于汉字每个汉字为2个字节存储//in:需要转码的字符串//out:转码后的字符串int iconv_code(const string& fromcode, const string& tocode, const string& in, string& out){   char *sin, *sout;size_t lenin, lenout;int ret;iconv_t c_pt;if ((c_pt = iconv_open(tocode.c_str(), fromcode.c_str())) == (iconv_t)(-1)){out=in;return -1;}lenin = in.size()+1;//字符串要有个结束符位char* oldPasserName = new char[lenin];//这里oldPasserName为工作中用的名字,没什么特殊含义strcpy(oldPasserName, in.c_str());lenout = lenin*10;char* newPasserName = new char[lenout];sin = oldPasserName;sout = newPasserName;ret = iconv(c_pt, &sin, &lenin, &sout, &lenout);if(ret == -1){out=in;iconv_close(c_pt);return -1;}iconv_close(c_pt);out = newPasserName;delete []oldPasserName;//别忘记释放掉delete []newPasserName;return 0;}

闲话:

为什么需要转码呢,一般情况下,数据库使用GBK字符集存储,而有使用UTF-8的字符集字符串会传入应用程序,这时容易发生问题,但假如应用程序环境变量是UTF-8的,数据库如Oracle知道你传的是UTF-8字符串,它会自动帮你转码,这样不会有问题;但环境变量标明是GBK的,而应用程序传入UTF-8的汉字,那么orale会存储乱码,因为你欺骗了oracle。所以出现“欺骗”的情形时需要转码,注意自己程序是否会欺骗数据库。

同时,这个iconv函数是操作系统自己开发的库函数,而不是c++标准的,具体使用方式有可能依据系统不同而不同,我的环境是linux,所以各种linux发行版一般不会出现问题。

C++: 对字符串转换字符集(编码)相关推荐

  1. String构造方法和字符集编码转换

    2019独角兽企业重金招聘Python工程师标准>>> 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础 ...

  2. java 字符转化字符串_【转载】java字符串的各种编码转换

    来自:http://www.blogjava.net/rabbit/archive/2008/03/27/189009.html import java.io.UnsupportedEncodingE ...

  3. php 转换数组的字符集,PHP 自动转换字符集(支持字符串和数组)功能实例

    这篇文章主要为大家详细介绍了PHP 自动转换字符集(支持字符串和数组)功能实例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. 经测试代码如下: / ...

  4. php支持 的编码,php编码转换函数(自动转换字符集支持数组转换)

    当接受未知客户端提交的数据时,由于各客户端的编码不统一,但服务器端最终只能以一种编码方式来处理,这种情况下就会涉及到编码转换的问题. 复制代码 代码如下: // 自动转换字符集 支持数组转换 func ...

  5. php 设置字符集函数,PHP 数组字符集编码转换的函数

    摘要 腾兴网为您分享:PHP 数组字符集编码转换的函数,云南移动,学习计时,小米音乐,西餐菜谱等软件知识,以及酷狗旧版,摇骰子软件,易吧进销存软件,指南针,su楼梯插件,她趣,守卫剑阁大圣归来,vr设 ...

  6. 字符串转换成utf-8编码

    a.将字符串转换成utf-8编码的字节,并输出,然后将该字节在转换成utf-8编码字符串,在输出 b.将字符串转换后才能gbk编码的字节,并输出,然后将该字节在转换成gbk编码字符串,在输出 1 2 ...

  7. LINUX下文件字符集编码查看与转换并文件名编码转换

    检查文件编码file命令 file ip.txt(加上-i选项可强制显示字符集) ip.txt: UTF-8 Unicode text, with escape sequences 一.运用iconv ...

  8. 通过流进行字符集编码转换

    为什么80%的码农都做不了架构师?>>>    // 初始化文件输入流 tb_stream_ref_t istream = tb_stream_init_from_url(" ...

  9. PHP 字符串编码处理 (附各语言的字符集编码范围)

    PHP中GBK和UTF8编码处理  一.编码范围 1. GBK (GB2312/GB18030) x00-xff GBK双字节编码范围 x20-x7f ASCII xa1-xff 中文 x80-xff ...

最新文章

  1. oraclf 复杂查询练习_刷完这些烧脑的SQL练习题,复杂查询才能熟能生巧
  2. Leetcode 206. 反转链表 解题思路及C++实现
  3. python基础系列教程——python所有包库的下载
  4. 学习ASP.NET Core Razor 编程系列十八——并发解决方案
  5. 音频处理基本概念及音频重采样
  6. ARM32/ARM64函数调用规则
  7. 经商失败的人,最可怕的不是失去金钱,而是失去信心
  8. nginx http重定向https 无效_Golang设置https访问,以及http如何重定向到https
  9. mysql 指针应用_MySQL 游标的作用与使用相关
  10. VS出现目标包.NETFramework的目标包没有安装
  11. win10 安装IIS
  12. 6.详解第二代蜂窝移动通信系统的典型代表——GSM和通用分组无线业务(GPRS)
  13. 巨人史玉柱的创业故事
  14. 2022-华为-大数据研发工程师-秋招面经
  15. cnavas手绘图形库 : rough.js
  16. 实现微信扫描小程序码携带参数和路径跳转页面
  17. Kafka 发送消息 Idempotent -- Spring 整合
  18. 利用python生成微信h5_Python的h5文件的创建与读取
  19. python+openCV使用SIFT算法实现印章的总相似度检测
  20. 爬虫--智联爬取--拼接链接的演示

热门文章

  1. java中div的用法,Java Math floorDiv()用法及代码示例
  2. 程序性能分析php,php代码的性能分析
  3. sony微型计算机,舍我其谁?只有SONY做得到!
  4. C语言创建学生姓名分数链表,C语言编程 编写程序,建立一个学生数据链表,学生的数据包括学号、姓名、成绩。...
  5. 1235813找规律第100个数_每日一课:奥数知识点 —— 找简单数列的规律
  6. Java安装环境变量配置-day1
  7. git21天打卡day3-创建仓库
  8. Python错误重试逼疯多少人?解决办法来了
  9. 学计算机的大1新生规划,大学生学习计划怎么写
  10. c语言无线网络抓包程序,c语言实现抓包