unicode转utf8
来源:互联网 发布:hm淘宝上代购是正品吗 编辑:程序博客网 时间:2024/05/01 11:21
场景:
1.有些字符串编码是unicode的,但是第3方库需要的是utf8字符串,这时候就需要unicode转utf8的接口了。
//unicodeתutf8#include <iostream>#include <fstream>using namespace std;#define MAX_LENGTH 1024int UniCharToUTF8(wchar_t UniChar, char* OutUTFString){int UTF8CharLength = 0;if (UniChar < 0x80){ if ( OutUTFString )OutUTFString[UTF8CharLength++] = (char)UniChar;elseUTF8CharLength++;}else if(UniChar < 0x800){if ( OutUTFString ){OutUTFString[UTF8CharLength++] = 0xc0 | ( UniChar >> 6 );OutUTFString[UTF8CharLength++] = 0x80 | ( UniChar & 0x3f );}else{UTF8CharLength += 2;}}else if(UniChar < 0x10000 ){if ( OutUTFString ){OutUTFString[UTF8CharLength++] = 0xe0 | ( UniChar >> 12 );OutUTFString[UTF8CharLength++] = 0x80 | ( (UniChar >> 6) & 0x3f );OutUTFString[UTF8CharLength++] = 0x80 | ( UniChar & 0x3f );}else{UTF8CharLength += 3;}}else if( UniChar < 0x200000 ){if ( OutUTFString ){OutUTFString[UTF8CharLength++] = 0xf0 | ( (int)UniChar >> 18 );OutUTFString[UTF8CharLength++] = 0x80 | ( (UniChar >> 12) & 0x3f );OutUTFString[UTF8CharLength++] = 0x80 | ( (UniChar >> 6) & 0x3f );OutUTFString[UTF8CharLength++] = 0x80 | ( UniChar & 0x3f );}else{UTF8CharLength += 4;}}return UTF8CharLength;}void main(){FILE* pFile=fopen("E:/project/11111/Debug/11.txt","r");fseek(pFile, 2, SEEK_SET);long int file_length = 0;int index = 1;char* pBuf;pBuf = (char*)calloc(1, MAX_LENGTH);char* curr_buf;wchar_t w_ch=fgetwc(pFile);while(!feof(pFile)){ if(file_length + 6 > index * MAX_LENGTH){index++;realloc(pBuf, index * MAX_LENGTH);}curr_buf = pBuf + file_length;file_length += UniCharToUTF8(w_ch, curr_buf);printf("%s", curr_buf);w_ch=fgetwc(pFile); }pBuf[file_length] = '\0';fclose(pFile);getchar();}
- Unicode转UTF8
- utf8 转 unicode
- UTF8转unicode
- UNICODE 转 UTF8
- utf8转unicode
- unicode转utf8
- utf8转unicode
- utf8转unicode
- PHP UNICODE 转 UTF8
- unicode转UTF8
- unicode 转 utf8
- UTF8转Unicode
- unicode码表 及 unicode转utf8规则
- unicode码表 及 unicode转utf8规则
- unicode码表 及 unicode转utf8规则
- Asc转UTF8及Unicode
- unicode 转 utf8, WideCharToMultiByte MultiByteToWideChar
- UTF8 转 UNICODE GBK ANSI
- c++ fast Delegate 实现代码
- java Io
- 心灵的清泉
- 查询DB2版本
- 一些书目
- unicode转utf8
- metasploit渗透学习日记一
- C++中实现回调机制的几种方式
- SOSO地图API应用
- UCOS操作系统安装配置环境
- HBase适合做BI分析的数据源吗?
- 字符编码详解
- 移动编程语言的巅峰
- Android ICS关机跟重新启动功能研究