当前位置:编程学习 > C/C++ >>

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++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,