当前位置: 技术问答>linux和unix
急~~求助!用C++编写utf8转换成GBK码
来源: 互联网 发布时间:2016-07-23
本文导语: 如题,我输入汉字,输出的为GBK码!! 如我输入“老徐“,输出的为”C0CFD0EC“ 各位大侠帮帮忙吧!!! 代码或参考的资料都可。谢谢~~~ | #include #include #include #include #include using namespace s...
如题,我输入汉字,输出的为GBK码!!
如我输入“老徐“,输出的为”C0CFD0EC“
各位大侠帮帮忙吧!!!
代码或参考的资料都可。谢谢~~~
如我输入“老徐“,输出的为”C0CFD0EC“
各位大侠帮帮忙吧!!!
代码或参考的资料都可。谢谢~~~
|
#include
#include
#include
#include
#include
using namespace std;
int main()
{
string input(istreambuf_iterator(cin), (istreambuf_iterator()));
char * strIn = const_cast(input.c_str());
size_t lenIn = input.length();
iconv_t cd = iconv_open("GBK", "UTF-8");
vector output(lenIn + 1); //此大小不够严谨
output[lenIn] = '';
char * strOut = &output[0];
size_t lenOut = lenIn;
iconv(cd, &strIn, &lenIn, &strOut, &lenOut);
iconv_close(cd);
cout.write(&output[0], input.length() - lenOut);
return 0;
}
|
http://blog.csdn.net/zym_123456/archive/2008/03/19/2197247.aspx
|
这里是 Linux 版……
用 iconv 吧~
|
你要win32的还是要unix的,还是solaris得,我提供个win32的
rtn = WideCharToMultiByte( CP_ACP
, 0
, ( UINT16 * ) tmpbuf
, inLen / 2
, pGbkBuf
, bufLen
, NULL
, NULL );
rtn = WideCharToMultiByte( CP_ACP
, 0
, ( UINT16 * ) tmpbuf
, inLen / 2
, pGbkBuf
, bufLen
, NULL
, NULL );
|
去找一个ucs2到gb18030的转换表吧
|
在UE编辑器中可以转换
|
~~~不会,UP。
|
mark