- 浏览: 3507085 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
i conv 是一个通过unicode 作为中间码实现各种内码间相互转换的库,它基本上囊括了世界上所有编码方式,例如,ASCII 、 GB2312 、 GBK 、 GB18030 、BIG5 、UTF-8 、UCS-2 、UCS-2BE 、UCS-2LE 、UCS-4 、UCS-4BE 、UCS- 4LE 、UTF-16 、 UTF-16BE 、UTF-16LE 、UTF-32 、UTF-32BE 、UTF-32LE 、UTF-7 等等等,除此之外,还包括 泰语、日语、韩语、西欧等国家语言的编码。下面我们演示如何使用iconv 实现Big5 到GB2312 的转换,当然只要简单修改一下便可实现iconv 支 持任何编码间的转换。
下载
libiconv
是linux
版本的iconv
,可在 http://www.gnu.org/software/libiconv/
下载
iconv
的win32
版本可以在 http://gnuwin32.sourceforge.net/packages/libiconv.htm
下载
SVN
源码
另外,还有一些演示代码,需要的可以到我的SVN
下载
http://xcyber.googlecode.com/svn/trunk/Convert/
标签: libiconv , iconv , Big5 , GB2312 , 大五码 , 内码
代码片段(1)
[ 代码] [C/C++/Objective-C] 代码
001 |
/**************************************************************************** |
002 |
* Big5ToGB2312 - Convert Big5 encoding file to GB2312 encoding file |
003 |
* File: |
004 |
* Big5ToGb2312.c |
005 |
* Description: |
006 |
* Convert Big5 encoding file to GB2312 encoding file using iconv library |
007 |
* Author: |
008 |
* XCyber email:XCyber@sohu.com |
009 |
* Date: |
010 |
* August 7, 2008 |
011 |
* Other: |
012 |
* visit http://www.gnu.org/software/libiconv/ for more help of iconv |
013 |
***************************************************************************/ |
014 |
|
015 |
|
016 |
#include <stdio.h> |
017 |
#include <stdlib.h> |
018 |
#include <tchar.h> |
019 |
#include <locale.h> |
020 |
#include "../iconv-1.9.2.win32/include/iconv.h" |
021 |
|
022 |
//#pragma comment(lib, "../iconv-1.9.2.win32/lib/iconv.lib") // using iconv dynamic-link lib, iconv.dll |
023 |
#pragma comment(lib, "../iconv-1.9.2.win32/lib/iconv_a.lib") // using iconv static lib |
024 |
|
025 |
#define BUFFER_SIZE 1024 //BUFFER_SIZE must >= 2 |
026 |
|
027 |
|
028 |
void usage() |
029 |
{ |
030 |
printf("\nBig5ToGB2312 - Convert Big5 encoding file to GB2312 encoding file\n"); |
031 |
printf("XCyber@sohu.com on August 7, 2008\n"); |
032 |
printf(" Usage:\n"); |
033 |
printf(" Big5ToGB2312 [Big5 file(in)] [GB2312 file(out)]\n\n"); |
034 |
} |
035 |
|
036 |
|
037 |
int main(int argc, char* argv[]) |
038 |
{ |
039 |
FILE * pSrcFile = NULL; |
040 |
FILE * pDstFile = NULL; |
041 |
|
042 |
char szSrcBuf[BUFFER_SIZE]; |
043 |
char szDstBuf[BUFFER_SIZE]; |
044 |
|
045 |
size_t nSrc = 0; |
046 |
size_t nDst = 0; |
047 |
size_t nRead = 0; |
048 |
size_t nRet = 0; |
049 |
|
050 |
char *pSrcBuf = szSrcBuf; |
051 |
char *pDstBuf = szDstBuf; |
052 |
|
053 |
iconv_t icv; |
054 |
int argument = 1; |
055 |
|
056 |
//check input arguments |
057 |
if(argc != 3) |
058 |
{ |
059 |
usage(); |
060 |
return -1; |
061 |
} |
062 |
|
063 |
|
064 |
pSrcFile = fopen(argv[1],"r"); |
065 |
if(pSrcFile == NULL) |
066 |
{ |
067 |
printf("can't open source file!\n"); |
068 |
return -1; |
069 |
} |
070 |
|
071 |
pDstFile = fopen(argv[2],"w"); |
072 |
&nbs |
073 |
p;if(pSrcFile == NULL) |
074 |
{ |
075 |
printf("can't open destination file!\n"); |
076 |
return -1; |
077 |
} |
078 |
|
079 |
//initialize iconv routine, perform conversion from BIG5 to GB2312 |
080 |
//TODO: if you want to perfom other type of coversion, e.g. GB2312->BIG5, GB2312->UTF-8 ... |
081 |
//just change following two paremeters of iconv_open() |
082 |
icv = iconv_open("GB2312","BIG5"); |
083 |
if(icv == 0) |
084 |
{ |
085 |
printf("can't initalize iconv routine!\n"); |
086 |
return -1; |
087 |
} |
088 |
|
089 |
//enable "illegal sequence discard and continue" feature, so that if met illeagal sequence, |
090 |
//conversion will continue instead of being terminated |
091 |
if(iconvctl (icv ,ICONV_SET_DISCARD_ILSEQ,&argument) != 0) |
092 |
{ |
093 |
printf("can't enable \"illegal sequence discard and continue\" feature!\n"); |
094 |
return -1; |
095 |
} |
096 |
|
097 |
while(!feof(pSrcFile)) |
098 |
{ |
099 |
pSrcBuf = szSrcBuf; |
100 |
pDstBuf = szDstBuf; |
101 |
nDst = BUFFER_SIZE; |
102 |
|
103 |
// read data from source file |
104 |
nRead = fread(szSrcBuf + nSrc,sizeof(char),BUFFER_SIZE - nSrc,pSrcFile); |
105 |
if(nRead == 0) |
106 |
break; |
107 |
|
108 |
// the amount of data to be converted should include previous left data and current read data |
109 |
nSrc = nSrc + nRead; |
110 |
|
111 |
//perform conversion |
112 |
nRet = iconv(icv,(const char**)&pSrcBuf,&nSrc,&pDstBuf,&nDst); |
113 |
|
114 |
if(nRet == -1) |
115 |
{ |
116 |
// include all case of errno: E2BIG, EILSEQ, EINVAL |
117 |
// E2BIG: There is not sufficient room at *outbuf. |
118 |
// EILSEQ: An invalid multibyte sequence has been encountered in the input. |
119 |
// EINVAL: An incomplete multibyte sequence has been encountered in the input |
120 |
// move the left data to the head of szSrcBuf in other to link it with the next data block |
121 |
memmove(szSrcBuf,pSrcBuf,nSrc); |
122 |
} |
123 |
|
124 |
//wirte data to destination file |
125 |
fwrite(szDstBuf,sizeof(char),BUFFER_SIZE - nDst,pDstFile); |
126 |
|
127 |
} |
128 |
iconv_close(icv); |
129 |
fclose(pSrcFile); |
130 |
fclose(pDstFile); |
131 |
|
132 |
printf("conversion complete.\n"); |
133 |
|
134 |
return; |
135 |
} |
发表评论
-
js压缩工具(转载)
2012-06-07 11:58 9543怎么压缩Js?为什么要压缩Javascript? Javasc ... -
maven常见问题问答
2012-05-05 11:34 89531.前言 Maven,发音是[`meivin ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:17 3888When I try to install the And ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:13 1994When I try to install the And ... -
Enterprise Architect's Code Template Syntax
2011-12-13 22:58 2021Code Templates are written as ... -
Enterprise Architect's Engineering Code Template Framework Code Templates
2011-12-13 22:57 1787The Code Template Framework c ... -
ActiveX控件在签名以后,仍然被IE浏览器默认安全级阻止而无法安装。
2011-11-18 08:56 5444使用代码签名证书签名后的控件在运行时报“Internet ... -
关于IObjectSafety和ActiveX组件的脚本安全
2011-11-17 19:19 3121都说ActiveX 危险,那么 ... -
在此页上的 ActiveX 控件和本页上的其它部份的交互可能不安全。你想允许这种交互
2011-11-17 19:09 14845如果采用VC++开发的ActiveX,那么第一次运行的时候,I ... -
如何编写 INF 文件
2011-11-16 14:31 2189INF文件全称Information File文件,是Wino ... -
如何在web上实现对另一个应用程序的键盘输入,就像vb中的sendkey
2011-11-16 10:49 3545用 set WshShell = CreateOb ... -
MINGW GCC 4.3.0 安装与配置(解决CREATEPROCESS问题)
2011-07-28 23:53 4712首先,下载Mingw TDM 4.3.0版本http:// ... -
“没有找到MSVCP90D.dll”的解决办法
2011-04-02 00:21 4719出现这个bug的缘故是 ... -
DSO开发指南晋级(APACHE2.0 MOD 模块开发)
2010-09-23 04:23 2367APACHE2.0 MOD 模块开发 STEP ... -
ubuntu 7.10里装apxs2
2010-09-23 03:43 1987install apache2-prefork-dev ... -
使用 cURL 和 libcurl 通过 Internet 进行对话
2010-02-28 14:41 3669cURL 是一个命令行工具,可以对文件传输使用许多协议, ... -
codeblocks中plugin的实现
2010-02-16 00:47 3324快乐虾 http://blog.csdn.net/lig ... -
Ubuntu 下安装 Code::Blocks
2010-02-15 23:41 12038在Linux环境下,就不同 ... -
C/C++ IDE Code::Blocks安装过程
2010-02-15 23:27 55451.简介 Code::Blocks,有时 ... -
CodeLite可以媲美Code::Blocks
2010-02-15 21:27 41702CodeLite简单就是为wxWidgets/wxFormBu ...
相关推荐
`bg2gb`这个文件名可能是转换过程中的一个步骤,它可能代表了从Big5编码转换到GB2312编码的过程。这通常发生在处理旧的、使用Big5编码的文件或数据时。 在实际开发中,考虑到跨平台和兼容性问题,我们通常会建议...
总结来说,"apr-iconv-1.2.1-win32-src.zip"是一个包含apr-iconv 1.2.1版本Windows 32位源代码的压缩包,对于ActiveMQ这样的中间件开发至关重要,它提供了在多种编码格式间转换的功能,确保了跨平台通信的顺利进行。...
`iconv-lite` 支持多种常见的字符编码,如 UTF-8、GBK、BIG5、ISO-8859-1 等,使得开发者能够轻松地在不同编码之间进行转换,避免乱码问题。 在实际应用中,`iconv-lite` 的使用方法非常直观。首先,你需要通过 npm...
iconv-1.14-win32-x86_64是一个针对Windows 32位x86_64架构的iconv库版本,它主要用于字符编码转换。iconv是Unicode编码与各种其他字符编码之间转换的一个工具,广泛应用于跨语言环境的软件开发中,以确保数据在不同...
`iconv` 是一个广泛使用的命令行工具,用于在各种字符编码之间进行转换,确保数据的正确性和可读性。这个工具尤其适用于处理大文件,可以有效地避免出现乱码问题,确保文件内容的完整性和一致性。 ### iconv 的基本...
Iconv是一个广泛使用的字符集转换工具,它允许在多种字符编码之间进行转换,包括Unicode、GBK和UTF-8。 Iconv在C/C++编程中非常常见,因为它提供了高效的字符编码转换功能。在Android NDK环境中,我们可以通过编写C...
在PHP编程语言中,处理不同字符编码的转换是常见的需求,特别是当涉及到中文字符时,如GBK(GB2312)、Big5和UTF-8等。这些编码标准在中国大陆和台湾地区尤为常见。本篇文章将详细介绍如何在PHP中进行各种编码间的...
对于Big5和GB码的转换,主要是依据它们各自的编码规则进行解码和编码。转换过程中,我们需要处理每个字符的编码值,将其从一种编码格式转换为另一种。 以下是一个简单的Python示例,展示了Big5码转GB码的基本思路:...
在Windows的cmd环境下,iconv能帮助开发者和用户处理各种字符编码,例如GBK、UTF-8、BIG5等。这些编码标准在不同的地区和应用程序中各有其适用性,如果不进行转换,可能会导致乱码问题。例如,当一个使用UTF-8编码的...
5. **使用专业库**:利用成熟的编码转换库,如Python的`chardet`用于检测原始编码,`iconv`或`unidecode`等工具进行转换,可以提高转换的准确性和稳定性。 了解这些基本概念和技术后,开发者能够更好地处理各种编码...
Big5则主要应用于台湾和香港地区,是繁体中文的常用编码,它同样使用两个字节表示一个字符,但其编码空间与GB2312和GBK不兼容,因此在处理这两种编码时需要特别注意。 在CC++中进行编码转换,通常需要借助库函数或...
$pdf->SetFont('GB', '', 8); $pdf->SetLeftMargin(15.0); $pdf->Image("$user_pkc",15,10,56,56); $pdf->Cell(56, 56, iconv("UTF-8", "gbk", ""), 1, 0, 'C'); $pdf->Cell(52, 9.3, iconv("UTF-8", "gbk", "姓名")...
PHP作为一种广泛使用的服务器端脚本语言,经常需要处理各种字符集之间的转换问题,例如"GB2312"到"Big5"的转换。GB2312是中国大陆广泛采用的一种简体中文字符集,而Big5则是主要在台湾和香港地区使用的繁体中文编码...
本文将深入探讨两个常见的中文字符编码——UTF-8和GB2312,并以三星手机电话本为例,介绍如何进行这两者之间的转换,以便于数据的读取和导入。 首先,我们来理解UTF-8和GB2312的基本概念。UTF-8,全称Unicode ...
标题中的"apr-iconv-0.9.7-win32-src-r2.zip"是指一个针对Windows平台的开源软件包,包含APR Iconv库的源代码版本0.9.7。APR全称为Apache Portable Runtime,是Apache HTTP服务器项目的一个核心部分,提供了跨平台的...
iconv是知名的开源跨平台编码转换库,iconv.exe是iconv库在windows下的命令行工具,iconv.exe的一般用法:iconv.exe -f gbk -t utf-8 gbk.txt > utf-8.txt。其中 -f gbk 指明转换前的文件编码是gbk,-t utf-8 指明...
$Test->draw$graph->title->Set(iconv_arr("Phpwind 图表测试")); // 设置图表标题 这里iconv_arr是我自己加的,为了支持我们伟大的中文要把你的当前编码转化为html实体$graph->xaxis->title->Set(iconv_arr("这个...
//设置X轴标题$graph->yaxis->title->Set(iconv_arr("这个是Y轴")); //设置Y轴标题$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置标题字体,这里字体默认是FF_FONT1,为了中文换成FF_SIMSUN$graph->yaxis->...
5. **设置图表标题**:使用`iconv()`函数将中文标题转换为GB2312编码。 6. **处理横坐标数据**:对于横坐标上的每一个中文标签,都使用`iconv()`函数将其从UTF-8转换为GB2312编码。例如: ```php $datas[$i] = ...
项目里#include<iconv.h>,并在工程->设置->link里 对象/模块里加入 libiconv.lib c/C++里预定义加入LIBICONV_STATIC Link忽略库加入LIBCD.lib(看似乎有函数重定义的错误,如果有则加入) libiconv使用动态dll 上lib...