C++:UTF-8、UTF-16、UTF-32之间的编码转换
开发语言:C++
功能描述:
Unicode内码转换器。用于UTF-8、UTF-16(UCS2)、UTF-32(UCS4)之间的编码转换。
下载地址:
UnicodeConverter.zip
版本历史:
V1.0 2010年03月12日
完成正式版本。
源代码:
UnicodeConverter.h
001
/* ----------------------------------------------------------
002
文件名称:UnicodeConverter.h
003
004
作者:秦建辉
005
006
MSN:splashcn@msn.com
007
008
当前版本:V1.0
009
010
历史版本:
011
V1.0 2010年03月12日
012
完成正式版本。
013
014
功能描述:
015
Unicode内码转换器。用于utf-8、utf-16(UCS2)、utf-32(UCS4)之间的编码转换
016
------------------------------------------------------------ */
017
#pragma once
018
019
#include <windows.h>
020
#include <stdio.h>
021
#include <ostream>
022
023
using namespace std;
024
025
class CUnicodeConverter
026
{
027
/* -------------------------------------------------------------
028
内码转换
029
------------------------------------------------------------- */
030
public:
031
/*
032
功能:将UCS4编码转换成UTF8编码
033
参数:
034
dwUCS4:要转换的UCS4编码
035
pbUTF8:用于存储转换后的UTF8编码。设为NULL,可以获取长度信息(字节数)
036
返回值:
037
0:无效的UCS4编码
038
1-6:UTF8编码的有效长度
039
*/
040
static INT UCS4_To_UTF8( DWORD dwUCS4, BYTE* pbUTF8 );
041
042
/*
043
功能:将UTF8编码转换成UCS4编码
044
参数:
045
pbUTF8:要转换的UTF8编码
046
dwUCS4:存储转换后的UCS4编码
047
返回值:
048
0:参数错误或无效的UTF8编码
049
1-6:UTF8编码的有效长度
050
*/
051
static INT UTF8_To_UCS4( const BYTE* pbUTF8, DWORD& dwUCS4 );
052
053
/*
054
功能:将UCS4编码转换成UTF16编码
055
参数:
056
dwUCS4:要转换的UCS4编码
057
pwUTF16:用于存储转换后的UTF16编码。设为NULL,可以获取长度信息(字符数)
058
返回值:
059
0:无效的UCS4编码
060
1:转换成1个UTF16编码
061
2:转换成2个UTF16编码
062
*/
063
static INT UCS4_To_UTF16( DWORD dwUCS4, WORD* pwUTF16 );
064
065
/*
066
功能:将UTF16编码转换成UCS4编码
067
参数:
068
pwUTF16:需要转换的UTF16编码
069
dwUCS4:存储转换后的UCS4编码
070
返回值:
071
0:参数错误或无效的UTF16编码
072
1:1个UTF16编码被转换
073
2:2个UTF16编码被转换
074
*/
075
static INT UTF16_To_UCS4( const WORD* pwUTF16, DWORD& dwUCS4 );
076
077
/*
078
功能:将UTF8字符串转换成UTF16字符串
079
参数:
080
pbszUTF8Str:需要转换的UTF8字符串
081
pwszUTF16Str:存储转换后的UTF16字符串。设为NULL,可以获取所需长度信息(字符数)
082
返回值:
083
0:转换失败
084
>0:UTF16字符串长度
085
*/
086
static INT UTF8Str_To_UTF16Str( const BYTE* pbszUTF8Str, WORD* pwszUTF16Str );
087
088
/*
089
功能:将UTF16字符串转换成UTF8字符串
090
参数:
091
pwszUTF16Str:需要转换的UTF16字符串
092
pbszUTF8Str:存储转换后的UTF8字符串。设为NULL,可以获取所需长度信息(字节数)
093
返回值:
094
0:转换失败
095
>0:UTF8字符串长度(不包括NULL字符)
096
*/
097
static INT UTF16Str_To_UTF8Str( const WORD* pwszUTF16Str, BYTE* pbszUTF8Str );
098
099
/* -------------------------------------------------------------
100
C文件写入操作
101
------------------------------------------------------------- */
102
public:
103
/*
104
功能:向文件中写入UTF8编码
105
返回值:
106
写入的字节数
107
*/
108
static UINT Print_UTF8_By_UCS4( FILE* out, DWORD dwUCS4 );
109
110
/*
111
功能:向文件中写入UTF16编码
112
返回值:
113
写入的字节数
114
*/
115
static UINT Print_UTF16_By_UCS4( FILE* out, DWORD dwUCS4, BOOL isBigEndian = FALSE );
116
117
/*
118
功能:将UTF16字符串以UTF8编码输出到文件中
119
返回值:
120
写入的字节数
121
*/
122
static UINT Print_UTF8Str_By_UTF16Str( FILE* out, const WORD* pwszUTF16Str );
123
124
/*
125
功能:将UTF8字符串以UTF16编码输出到文件中
126
返回值:
127
&
补充:软件开发 , C++ ,