python3 gbk转utf8,pythongbk编码字符串转为UTF-8

  python3 gbk转utf8,pythongbk编码字符串转为UTF-8

  Linux没有以上两个函数,所以需要使用函数mbstowcs和wcstombs。

  Mbstowcs将多字节编码转换为宽字节编码。

  Wcstombs将宽字节编码转换为多字节编码。

  这两个功能在转换时会受到系统编码类型的影响,必须设置转换前后的编码类型。在setlocale函数中设置系统代码。

  在linux下输入名称。

  Locale -a显示了系统支持的编码类型。

  andy@andy-linux:~$ locale -a

  C

  en_ag

  en_au.utf8

  en_bw.utf8

  en_ca.utf8

  en_dk.utf8

  en_gb.utf8

  en_hk.utf8

  en_ie.utf8

  en_in

  en_ng

  en_nz.utf8

  en_ph.utf8

  en_sg.utf8

  en_us.utf8

  en_za.utf8

  en_zw.utf8

  可移植性操作系统接口

  zh_cn.gb18030

  zh_cn.gbk

  zh_cn.utf8

  zh_hk.utf8

  zh_sg.utf8

  zh_tw.utf8

  本例实现了从zh_CN.gbk到zh_CN.utf8的转换。

  流程:

  1.调用函数setlocale(LC_all, zh_CN.gbk ),将要转码的字符串类型设置为gbk类型。

  2.调用函数mbstowcs实现从1中的代码集到unicode代码的转换。

  3.调用函数setlocale(LC_all, zh_CN.utf8),将转换后的编码类型设置为utf8类型。

  4.调用函数wcstombs实现从unicode到3中设置的代码类型的转换。

  以下是我写的源代码。

  # include # include/* * * * * * * * * * * * * * * * * * include # include/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  *功能:gbk2utf8

  *描述:提供从gbk编码到utf8编码的转换。

  *

  * input: utfstr,转换后的字符串;Srcstr,要转换的字符串;Maxutfstrlen,大部分utfstr

  大长度

  *输出:utfstr

  *返回:-1,失败;0,成功

  *

  *修改历史记录。

  -

  * 2011年11月25日,吕洪雅撰写

  -

  ********************************。

  intgbk2utf8(char*utfstr,const char *srcstr,int maxutfstrlen ) ) ) ) ) ) ) ) ) ) ) 65

  {

  if(null==srcstr)).

  {

  打印机(错误的参数(n));

  返回-1;

  }

  //首先将gbk代码转换为unicode代码

  If(null==setlocale(LC_all, zh _ cn . gbk )/setting是转换成unicode之前的代码,现在是gbk代码。

  {

  打印机(错误的参数(n));

  返回-1;

  }

  intunicodelen=mbstowcs(null,srcstr,0);//计算转换后的长度

  if(unicodelen=0)

  {

  打印(不能传输)!\ n ;

  返回-1;

  }

  wchar _ t * unicode str=(wchar _ t *)calloc)sizeof(wchar _ t),unicode len 1);

  mbstowcs(unicodestr、srcstr、strlen(srcstr));//gbk转换为unicode

  将unicode编码转换为utf8编码

  If(null==setlocale(LC_all, zh_cn.utf8 ))设置unicode转换后的代码,目前为utf8。

  {

  打印机(错误的参数(n));

  返回-1;

  }

  intutflen=wcstombs(null,unicodestr,0);//计算转换后的长度

  if(utflen=0)))

  {

  打印(不能传输)!\ n ;

  返回-1;

  }

  Elseif(utflen=maxutfstrlen )//确定是否有足够的空间。

  {

  print(dststrmemorynotenough(n));

  返回-1;

  }

  wstombs(utfstr,unicodestr,ut flen);

  utf str[ut flen]=0;//添加一个终止符

  Free (unicode字符串);

  返回utflen

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: