/** =====================================================================================** Filename: testcode.cpp** Description:** Version: 1.0* Created: 2017年10月10日 13:37:58* Last Modified: 2017年10月10日 13:37:58* Revision: none* Compiler: gcc** Author: zt (),* Organization:** =====================================================================================*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdbool.h>#include <windows.h>int unicode_to_utf8 ( char* inbuf, size_t* inlen, char* outbuf, size_t* outlen ){size_t outsize = *outlen;int utf8Count = WideCharToMultiByte(CP_UTF8,0,(LPCWSTR)inbuf,(int)(*inlen / sizeof(wchar_t)),outbuf,(int)outsize,NULL,NULL);if ( utf8Count == 0 ){fprintf ( stderr, "WideCharToMultiByte failed: %lu\n", GetLastError () );return 0;}*inlen = 0;*outlen = outsize - utf8Count;return utf8Count;}size_t utf8_to_unicode ( char* inbuf, size_t* inlen, char* outbuf, size_t* outlen ){size_t outsize = *outlen;int wideCount = MultiByteToWideChar(CP_UTF8,0,inbuf,(int)*inlen,(LPWSTR)outbuf,(int)(outsize / sizeof(wchar_t)));if ( wideCount == 0 ){fprintf ( stderr, "MultiByteToWideChar failed: %lu\n", GetLastError () );return 0;}*inlen = 0;*outlen = outsize - ( wideCount * sizeof(wchar_t) );return wideCount * sizeof(wchar_t);}void printBuffer ( char* buff, int size ){for ( int i = 0; i < size; ++i ){if ( i % 0x10 == 0 && i != 0 )printf ( "\n" );printf ( "%02x ", ( unsigned char ) buff[i] );}printf ( "\n" );}int main (){char text[1024] = "测试";size_t inlen = strlen ( text );char outbuf[1024] = {};size_t outlen = 1024;printBuffer ( text, inlen );int outsize = utf8_to_unicode ( text, &inlen, outbuf, &outlen );printBuffer ( outbuf, outsize );char out2[1024] = { 0 };size_t outsize2 = 1024;size_t insize = outsize;int len2 = unicode_to_utf8 ( outbuf, &insize, out2, &outsize2 );printBuffer ( out2, len2 );return 0;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。