一,命令行

在LINUX上进行编码转换时,可以利用iconv命令实现,这是针对文件的,即将指定文件从一种编码转换为另一种编码。

iconv命令用法如下:
iconv [选项...] [文件...]

1.输入/输出格式规范:
  -f, --from-code=名称 原始文本编码
  -t, --to-code=名称 输出编码

2.列举所有已知的字符集  -l, --list

3.输出控制:
  -c   从输出中忽略无效的字符
  -o, --output=FILE   输出文件
  -s, --silent   关闭警告
  --verbose   打印进度信息

例子:
iconv -f utf-8 -t gb2312 /server_test/reports/software_.txt > /server_test/reports/software_asserts.txt

二,函数运用

1.头文件
#include <iconv.h>

2.函数
(1) iconv_t iconv_open(const char *tocode, const char *fromcode);
此函数说明将要进行哪两种编码的转换,tocode是目标编码,fromcode是原编码,该函数返回一个转换句柄,供以下两个函数使用。

(2) size_t iconv(iconv_t cd,char **inbuf,size_t *inbytesleft,char **outbuf,size_t *outbytesleft);
此函数从inbuf中读取字符,转换后输出到outbuf中,inbytesleft用以记录还未转换的字符数,outbytesleft用以记录输出缓冲的剩余空间。

(3) int iconv_close(iconv_t cd);

此函数用于关闭转换句柄,释放资源。

3.例子: 用C语言实现的转换示例程序

#include "stdio.h"
#include "string.h"
#include "iconv.h"
#include "stdlib.h" static int charset_convert(const char *from_charset, const char *to_charset,
char *in_buf, size_t in_left, char *out_buf, size_t out_left)
{
iconv_t icd = (iconv_t)-1;
size_t sRet = -1;
char *pIn = in_buf;
char *pOut = out_buf;
size_t outLen = out_left; if (NULL == from_charset || NULL == to_charset || NULL == in_buf || 0 >= in_left || NULL == out_buf || 0 >= out_left)
{
return -1;
} icd = iconv_open(to_charset, from_charset);
if ((iconv_t)-1 == icd)
{
return -1;
} sRet = iconv(icd, &pIn, &in_left, &pOut, &out_left);
if ((size_t)-1 == sRet)
{
iconv_close(icd);
return -1;
} out_buf[outLen - out_left] = 0;
iconv_close(icd);
return (int)(outLen - out_left);
} static int charset_convert_UTF8_TO_GB2312(char *in_buf, size_t in_left, char *out_buf, size_t out_left)
{
return charset_convert("UTF-8", "GB2312", in_buf, in_left, out_buf, out_left);
} static int charset_convert_GB2312_TO_UTF8(char *in_buf, size_t in_left, char *out_buf, size_t out_left)
{
return charset_convert("GB2312-8", "UTF-8", in_buf, in_left, out_buf, out_left);
} int main()
{
char *pIn = "hello 中国人";
char *pOut = NULL;
size_t outLen = 0;
size_t inLen = 0;
int iRet = -1; inLen = strlen(pIn);
outLen = inLen * 3;
pOut = (char *)malloc(sizeof(char) * outLen);
if (NULL == pOut)
{
return -1;
}
memset(pOut, 0, sizeof(char) * outLen); iRet = charset_convert_UTF8_TO_GB2312(pIn, (size_t)inLen, pOut, (size_t)inLen);
if (-1 == iRet)
{
return -1;
} printf("out = %s;\touLen = %d\n", pOut, iRet);
free(pOut);
pOut = NULL;
return 0;
}

 参考:http://blog.csdn.net/jnbbwyth/article/details/6991371

linux文件字符集转换(utf8-gb2312)的更多相关文章

  1. Linux字符编码转换 UTF8转GB3212

    在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码.    一.利用iconv函数族进行编 ...

  2. java(IO)读写文件乱码转换UTF-8问题

    java(IO)读写文件乱码转换UTF-8问题 读取文件 String Content = ""; // 文件很长的话建议使用StringBuffer try { FileInpu ...

  3. windows linux 文件编码转换

    查看文件编码在Linux中查看文件编码可以通过以下几种方式:1.在Vim中可以直接查看文件编码:set fileencoding即可显示文件编码格式.如果你只是想查看其它编码格式的文件或者想解决用Vi ...

  4. Linux 文件编码格式转换

    如果需要在Linux 中操作windows下的文件,那么经常遇到文件编码转换的问题. Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-. 查看文件编码 在vim 中 ...

  5. PHP 将字符串转换为字符集格式UTF8/GB2312/GBK 函数iconv()

     iconv()介绍 iconv函数可以将一种已知的字符集文件转换成另一种已知的字符集文件 iconv('要转化的格式',‘转化后的格式’,‘转化的数据’); 但是转化是经常出错,一般需要在转成的编码 ...

  6. linux的字符集转换

    命令查看编码类型 查看命令参数 查看支持的字符集 将文件转换成utf-8 的文件(经测试比较鸡肋,不好用) [root@ag-1 hh]# iconv oldboy -f us-ascii -t ut ...

  7. windows和linux文件的转换

    由于windows与unix系统的换行不一致,因此需要相互之前的格式转换 只需要在linux上执行 dos2unix filename 将windows下的文本文件转换成linux上可以浏览的文件 u ...

  8. IO流实现GBK写入文件然后转换UTF-8

    public static void main(String[] args) throws IOException { File file = new File("olol\\a.txt&q ...

  9. 在Vim中查看文件编码和文件编码转换

    在Vim中查看文件编码和文件编码转换 风亡小窝 关注  0.2 2016.09.26 22:43* 字数 244 阅读 5663评论 0喜欢 2 在Vim中查看文件编码 :set fileencodi ...

随机推荐

  1. npm install -d

    nodejs Error: Cannot find module 'xxx'错误 解决方案: 确定package.json里有添加相应的依赖配置 使用npm install -d 可以自动配置pack ...

  2. 关于C语言字符串函数使用的一点心得

    就字符串的拼接函数为例strcat. 原型:extern char *strcat(char *dest,char *src);用法:#include <string.h> 功能:把src ...

  3. jslint报错太多的解决方式

    当jslint 一个js的时候,有时候太多“错误”,导致报错:“Too many errors. (53% scanned).”而停止检查 js文件,此时我们还是想把整个js文件检查完毕的. 所以,看 ...

  4. bzoj 3027 [Ceoi2004]Sweet——生成函数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3027 化式子到 ( \mul_{i=1}^{n}(1-x^(m[i]+1)) ) / (1- ...

  5. web聊天相关知识

    http相关知识 http是无状态,请求,响应模式的通信模式,就是用户每次通过浏览器点击一下页面,都需要重新与web服务器建立一下连接,且发送自己的 session id 给服务器端以使服务器端验证此 ...

  6. HTTP-Runoob:HTTP请求方法

    ylbtech-HTTP-Runoob:HTTP请求方法 1.返回顶部 1. HTTP请求方法 根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法: GET, PO ...

  7. eclipse中删除tomcat server 导致不能重新创建该server

    定位到:workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings 1 打开org.eclipse.jst.server.tomca ...

  8. Tortoisesvn 如何在资源管理器中断开连接

    你在这个文件夹下打开“工具—文件夹选项—查看”,勾选“显示隐藏的文件夹”选项,可以看到在SVN所在的文件夹下面, 有一个.svn文件夹,把它删除了,刷新一下就可以了.

  9. spring Annotation

    使用注解替代xml 在前几章的笔记基础上添加使用注解的形式 1.配置applicationContext 添加context schema <?xml version="1.0&quo ...

  10. python 函数对象、函数嵌套、名称空间与作用域、装饰器

    一 函数对象 一 函数是第一类对象,即函数可以当作数据传递 1 可以被引用 2 可以当作参数传递 3 返回值可以是函数 3 可以当作容器类型的元素 二 利用该特性,优雅的取代多分支的if def fo ...