Linux下实现UTF-8和GB2312互相转换的方法

实例如下:

#include<iconv.h> #include <stdio.h>

#include<iconv.h>
using namespace std;
int utf8togb2312(const char *sourcebuf,size_t sourcelen,char *destbuf,size_t destlen) { 

iconv_t cd; 

if( (cd = iconv_open("gb2312","utf-8")) ==0 )  

  return -1; 

memset(destbuf,0,destlen); 

const char **source = &sourcebuf; 

char **dest = &destbuf;
if(-1 == iconv(cd,source,&sourcelen,dest,&destlen))  

  return -1; 

iconv_close(cd); 

return 0; 

}
int gb2312toutf8(const char *sourcebuf,size_t sourcelen,char *destbuf,size_t destlen) { 

iconv_t cd; if( (cd = iconv_open("utf-8","gb2312")) ==0 )  

return -1; memset(destbuf,0,destlen); 

const char **source = &sourcebuf; 

char **dest = &destbuf;
 if(-1 == iconv(cd,source,&sourcelen,dest,&destlen))  

return -1; 

iconv_close(cd); 

return 0; 

}
int main() { 

char line[80]; 

char dest_gb2312[200]; 

char dest_utf8[200]; 

int ret ; 

FILE *fp = fopen("love.txt","r"); 

if(fp == NULL) 

{  

printf("oh my dear,open fail...\n");  

return 1; 

}

 memset(line,0,80); 

if( NULL == fgets(line,80,fp)) 

{  

printf("oh fgets fail...\n");  

return 2; 

}

printf( "----- :%s\n",line );

ret = gb2312toutf8(line,strlen(line),dest_gb2312,200); 

// ret = gb2312toutf8(dest_gb2312,strlen(dest_gb2312),dest_utf8,80); 

printf( "ret=%d\n\n\n",ret); 

printf( "gb2312:%s\n",line ); 

printf( " utf-8:%s\n\n\n\n\n\n", dest_gb2312 );

 ret = utf8togb2312(dest_gb2312,strlen(dest_gb2312),dest_utf8,200); 

printf( "ret=%d\n\n\n ",ret); 

printf( " utf-8:%s\n ",dest_gb2312); 

printf( "gb2312:%s\n ",dest_utf8);

 return 0;

}

以上就是小编为大家带来的Linux下实现UTF-8和GB2312互相转换的方法全部内容了,希望大家多多支持我们~

(0)

相关推荐

  • Linux下实现UTF-8和GB2312互相转换的方法

    实例如下: #include<iconv.h> #include <stdio.h> #include<iconv.h> using namespace std; int utf8togb2312(const char *sourcebuf,size_t sourcelen,char *destbuf,size_t destlen) { iconv_t cd; if( (cd = iconv_open("gb2312","utf-8&quo

  • Linux下刚安装完mysql修改密码的简单方法

    在Centos中安装MySQL后默认的是没有root密码的,默认的是回车, 那么为了方便需要修改密码. 没有密码为MYSQL加密码: mysql -uroot -p 回车 提示输入密码,为空回车 update mysql.user set password=PASSWORD('12345678') where user='root'; 刷新权限表,输入如下命令 flush privileges; 退出 quit 以上所述是小编给大家介绍的Linux下刚安装完mysql修改密码的简单方法,希望对大

  • python获得linux下所有挂载点(mount points)的方法

    本文实例讲述了python获得linux下所有挂载点(mount points)的方法.分享给大家供大家参考.具体实现方法如下: # execute the external "mount" command # and parse the output. import commands mount = commands.getoutput('mount -v') lines = mount.split('\n') points = map(lambda line: line.split

  • Linux 下 Python 实现按任意键退出的实现方法

    某天在群内有同学问到,在python下我用input或者raw_input都得输入完后回车才能获取到输入的值,那如何实现任意键退出暂停等功能呢,我当时也没有多想,因为接触python时间也不算长,主要还是Linux下的. 当然,Windows系统下会稍微简单一些,Windows系统下如果你安装了python的环境,默认自带的一个模块叫做msvcrt,import msvcrt,然后调用msvcrt.getch()即可.接下来即Linux下实现python版本的按任意键退出. 初学Python时在

  • Linux下查看.so和可执行文件是否debug编译的方法(必看)

    今天同事问我,如何判断一个.so是否是debug编译的. 我记得以前自己是用file来查看一个.so,根据是否包含"not stripped"来判断该.so是否是debug编译的,于是就没做实验就回答. 然而,stripped/not stripped并不是debug/release编译的判断标准. 我对debug和release的.so运行file后,得出几乎相同的输出, 都是not stripped. 所以我算是误导同事了. 根据<Computers Systems - A

  • linux下导入、导出mysql数据库命令的实现方法

    一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql /usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql 敲回车后会提示输入密码 2.只导出表结构 mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql /usr/local/mysql/bin/ mysqldump -uroo

  • Linux下Nginx负载均衡多个tomcat配置的方法步骤

    Linux下安装nginx和安装多个tomcat的方法这里不过多介绍,不清楚的可参考: Linux安装nginx: https://www.jb51.net/article/159519.htm Linux安装多个tomcat: https://www.jb51.net/article/159521.htm 当我们服务器安装好了nginx,并且安装了多台tomcat,那么我们现在可以试着玩玩nginx的负载均衡. 先简单介绍我的运行环境 一台阿里云服务器, Linux系统,jdk1.8, 已安装

  • Linux下使用Shell脚本获取终端宽度的解决方法

    获取终端大小时候的学习 在写shell脚本时想输出一行占满整个终端屏幕宽度的 横杠 发现for循环会导致执行缓慢 解决方法: 使用yes 命令 sed '50q' 显示50行 tr -d '\n' 删除 \n 多次重复输入相同字符可用yes yes "2" | sed '50q' | tr -d '\n' 想法来自:打印100个连续的符号,不用循环 ---------------------------------------------------------------------

  • Linux下科学计数法(e)转化为数字的方法

    科学计数法使用e标识数值,将科学计算学转化为数字的思路:按e右边的数字移动小数点位数.e右边的数字如果是负数,则向左移动小数点.示例如下: 1.2345678e2 = 123.45678 1.2345678e-2 = 0.012345678 1.7615562e+06 = 1761556.2 1.87982e7 = 18798200 1e3 = 1000 那么在shell中,如何转化科学计数法为数字呢,方法如下:这里以"1.7615562e+06" (或者1.7615562e6)为示例

  • Linux下常用压缩格式的压缩与解压方法详解

    .tar 解包: tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------------------------------------- .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName .tar.gz 解压:tar zxvf FileName.tar.gz 压缩:tar zcvf FileName.

随机推荐