`

linux utf8与gb2312转换函数

    博客分类:
  • c++
阅读更多
#includeiostream>
#includeiconv.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,const_cast<char**>(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,const_cast<char**>(source),&sourcelen,dest,&destlen))
    return -1;
  iconv_close(cd);
  return 0;
  
}
int main()
{
  FILE *fp = fopen("love.txt","r");
  if(fp == NULL)
    {
      cout  "open file faiulre"  endl;
      return 1;
    }
  char line[80];
  memset(line,0,80);
  if( NULL == fgets(line,80,fp))
    {
      cout  "read file failure"  endl;
      return 2;
    }
  char dest_gb2312[80];
  utf8togb2312(line,strlen(line),dest_gb2312,80);
  cout  "before convert(utf-8): "  line  endl;
  cout  "after convert(gb2312): "  dest_gb2312  endl;
  cout  endl  endl;
  char dest_utf8[80];
  gb2312toutf8(dest_gb2312,strlen(dest_gb2312),dest_utf8,80);
  cout  "before convert(gb2312)"  dest_gb2312  endl;
  cout  "after convert(utf-8)"  dest_utf8  endl;
    return 0;
}
分享到:
评论

相关推荐

    C++写的Windows下GB2312与UTF-8相互转换代码.rar

    在Windows环境下,C++开发过程中,常常需要处理各种编码格式之间的转换,比如GB2312(简体中文的一种常见编码)与UTF-8(通用的多语言编码)。本项目提供的"ChineseCode.cpp"和"ChineseCode.h"文件,正是为了解决这...

    UTF_8与GB2312编码转换

    UTF_8与GB2312编码转换 linux上面支持的是utf_8不支持GB2312编码,通过这个函数可以转换!

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

    本文将详细介绍如何在Linux环境下实现UTF-8与GB2312这两种常见字符集之间的转换,并提供具体的C/C++代码示例。 #### 二、背景知识 1. **UTF-8**: 是一种可变长度的Unicode字符编码,能够兼容ASCII码,广泛应用于...

    GB2312与UTF-8互转程序,包含源代码,MAKEFILE,及最终库,百分百直接使用

    在实际应用中,GB2312与UTF-8的转换可能涉及文本文件、数据库记录、网络传输等场景。理解字符编码原理和转换方法对于处理跨平台、跨语言的信息交流至关重要。此外,这个程序的源代码也可以作为学习字符编码和编程...

    gb2312toutf8.rar

    标题“gb2312toutf8.rar”表明这是一个与字符编码转换相关的项目,特别是将GB2312编码转换为UTF-8编码。在IT领域,字符编码是处理文本数据时的重要环节,不同的编码标准适用于不同的地区和用途。GB2312是中国大陆...

    gb2312到utf8的转换

    本文将深入探讨GB2312到UTF-8的转换过程以及相关知识点。 **GB2312编码:** GB2312,全称为“汉字机内码扩展规范”,是中国大陆于1980年制定的一套简体中文字符编码标准。它主要针对常用汉字进行编码,覆盖了6763个...

    GB2312转UTF-8编码

    本文主要探讨了在Linux和嵌入式Linux系统中如何将GB2312编码转换为UTF-8编码的问题,以及在实际操作过程中遇到的挑战和解决方案。 GB2312是中国大陆早期广泛使用的简体中文字符编码标准,它包含了6763个常用汉字。...

    UTF8.rar_UTF8_linux utf8 _linux utf8 Unicode_single

    标题“UTF8.rar_UTF8_linux utf8 _linux utf8 Unicode_single”暗示了这个压缩包包含与UTF-8编码在Linux环境下转换单个字符相关的源代码。UTF-8是一种广泛使用的Unicode字符编码方案,它能表示Unicode标准中的所有...

    C语言UTF8到ANSI和Unicode转换代码

    而"MFC中使用文档.doc"则可能详细解释了如何在MFC工程中配置和使用这些转换函数,包括修改项目属性来适应不同字符集的需求。 总结来说,理解和使用C语言进行字符编码转换是一项重要技能,特别是在处理跨平台或者多...

    UTF-8转GBK C语言 Linux

    在实际应用中,编码转换可能会遇到编码不兼容、非法字符等问题,因此在编写转换函数时,还需要考虑错误处理机制,如忽略非法字符、抛出错误提示或替换为特定的替换字符。 总的来说,实现UTF-8到GBK的编码转换是一个...

    GB、UNICODE、UTF8相互转换

    对于从GB2312到UTF-8的转换,我们需要首先将GB2312的双字节转换成对应的Unicode码点,然后根据UTF-8的编码规则,将码点转换成一到四个字节的序列。相反,从UTF-8到GB2312的转换则需要先识别UTF-8的字节序列,解析出...

    多字节与UTF-8、Unicode之间的转换

    #### 二、转换函数详解 1. **MBToUTF8** 这个函数的功能是从多字节编码转换到UTF-8编码。其核心步骤包括: - 使用`MultiByteToWideChar`函数将多字节字符串转换为宽字符字符串(WCHAR数组)。 - 再通过`...

    C++ UTF-8与 Unicode互相转换.docx

    本文将详细探讨C++中如何进行UTF-8与Unicode之间的转换,以及涉及的相关知识。 首先,我们要了解UTF-8和Unicode的基本概念。Unicode是一个通用的字符集,它包含世界上几乎所有的文字和符号,每个字符都有一个唯一的...

    c/c++ 字符集 gbk/utf8互转,Ansi/Utf8互转 纯c实现跨平台

    本文将深入探讨C/C++中GBK/UTF-8以及ANSI/UTF-8字符集的转换,以及如何通过纯C代码实现这些转换,确保程序在Windows和Linux等不同操作系统上的一致性。 首先,我们需要理解字符集的基础知识。ASCII是最基础的字符集...

    kaiti_GB2312.zip

    如果需要在GB2312和UTF-8等编码之间转换,可以使用专门的转换工具或编程语言的相关函数。 3. **跨平台兼容性**:虽然GB2312在Windows系统上较为常见,但在MacOS和一些国际化的Linux发行版中,UTF-8是默认的编码。...

    gbk和utf8转换程序

    总的来说,理解和掌握GBK与UTF-8的差异以及它们之间的转换方法是编程中的一项基本技能,特别是在处理中文字符时。C++11的更新使得这一过程变得更加简便和标准化,使得开发者可以更加灵活地处理各种编码的文本数据。

    利用iconv函数转UTF8码

    一个利用iconv函数将GBK码转为UTF-8码的函数,本函数在LINUX系统下测试正常。目前支持中文繁简、日文、英文、俄文等的转码。函数其实很简单,另外精选了一些本人觉得有助于理解ICONV函数及Unicode、GBK这些概念的...

    UTF-8互转GBK

    通过C++源代码,我们可以实现从UTF-8到GBK,以及从GBK到UTF-8的转换函数。这些函数通常会涉及字节序列的解析和重组,以及对特殊字符的处理。 在实现编码转换时,需要考虑以下几个关键点: 1. **字节顺序标记**:...

    简单的UTF-8与GBK之间相互转码工具

    这个名为`encoding_p.java`的Java源代码文件,应该包含了一个简单的类或函数,用于实现文件从GBK到UTF-8,以及从UTF-8到GBK的转换。在Java中,我们可以使用`java.nio.charset`包中的`Charset`和`CharsetDecoder`、`...

    UTF-8 UNICODE GBK 相互转换C源码

    在VS2005环境下,你可以使用C标准库中的`MultiByteToWideChar`和`WideCharToMultiByte`函数进行宽字符(UNICODE)与多字节字符(如GBK或UTF-8)之间的转换。同时,你需要包含`&lt;windows.h&gt;`头文件来使用这些函数。 ...

Global site tag (gtag.js) - Google Analytics