炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 195|回复: 2

[图文教程] ♦ 炫扩展模块 - 工具 - 炫::文本编码器

[复制链接]
  • TA的每日心情
    闭嘴
    2024-4-8 11:56
  • 发表于 2024-2-25 13:45:40 | 显示全部楼层 |阅读模式
    本帖最后由 bestkakkoii 于 2024-2-26 04:32 编辑


    炫::文本编码器

    此类旨在将ANSI文本与Unicode(utf16)轻松互转

    公开函数:

    • 炫::文本编码器* 炫::文本编码器::编码取文本编码器(无符号整数)

    从ACP获取文本编码器的实例指针,可使用上方提供的中文或英文枚举值
    透过该函数生成的指针不需要手动释放,由内部统一管理,在进程结束时自动释放,每一种ACP都具有唯一指针。

    • 炫::文本编码器* 炫::文本编码器::编码名称取文本编码器(编码名称)
    从编码名称取文本编码器的实例指针(大小写不限)请参阅下方对照表如 "Big5"


    • 炫::到十六位万国码(文本型A)

    将指定ACP的文本转换为Unicode(utf16)

    • 炫::到指定编码(十六位万国码文本)

    将指Unicode文本转换为指定ACP的文本

    名称和ACP对照表:

    //@别名 编码页
    enum ActiveCodePage
    {
        US_ASCII = 20127, //@别名 美国标准代码
        ISO_8859_1 = 28591, //@别名 西欧字符集
        ISO_8859_2 = 28592, //@别名 中欧字符集
        ISO_8859_3 = 28593, //@别名 南欧字符集
        ISO_8859_4 = 28594, //@别名 北欧字符集
        ISO_8859_5 = 28595, //@别名 拉丁_西里尔字符集
        ISO_8859_6 = 28596, //@别名 拉丁_阿拉伯字符集
        ISO_8859_7 = 28597, //@别名 拉丁_希腊字符集
        ISO_8859_8 = 28598, //@别名 拉丁_希伯来字符集
        ISO_8859_9 = 28599, //@别名 拉丁_土耳其字符集
        ISO_8859_10 = 28600, //@别名 北欧字符集_2
        SHIFT_JIS = 932, //@别名 日文假名字符集
        EUC_JP = 20932, //@别名 日文扩展字符集
        EUC_KR = 949, //@别名 韩文扩展字符集
        ISO_2022_KR = 50225, //@别名 韩文邮件和新闻字符集
        ISO_2022_JP = 50220, //@别名 日文邮件和新闻扩展字符集
        ISO_2022_JP_2 = 50222, //@别名 日文邮件和新闻扩展字符集2
        GB2312 = 936, //@别名 简体中文字符集
        UTF_8 = 65001, //@别名 万国码
        GBK = 936, //@别名 扩展国标
        GB18030 = 54936, //@别名 中国国家标准
        BIG5 = 950,  //@别名 繁体中文字符集
        CP851 = 851, //@别名 DOS西欧字符集
    };

    //@别名 编码地图标志
    enum MapFlag
    {
        MapFlagByteRev = LCMAP_BYTEREV, //@别名 字节反转
        MapFlagFullWidth = LCMAP_FULLWIDTH, //@别名 全角
        MapFlagHalfWidth = LCMAP_HALFWIDTH, //@别名 半角
        MapFlagHiragana = LCMAP_HIRAGANA, //@别名 平假名
        MapFlagKatakana = LCMAP_KATAKANA, //@别名 片假名
        MapFlagLinguisticCasing = LCMAP_LINGUISTIC_CASING, //@别名 语言大小写
        MapFlagLowerCase = LCMAP_LOWERCASE, //@别名 小写
        MapFlagHash = LCMAP_HASH, //@别名 哈希
        MapFlagSimplifiedChinese = LCMAP_SIMPLIFIED_CHINESE, //@别名 简体中文
        MapFlagSortHandle = LCMAP_SORTHANDLE, //@别名 排序句柄
        MapFlagSortKey = LCMAP_SORTKEY, //@别名 排序键
        MapFlagTitleCase = LCMAP_TITLECASE, //@别名 标题大小写
        MapFlagTraditionalChinese = LCMAP_TRADITIONAL_CHINESE, //@别名 繁体中文
        MapFlagUpperCase = LCMAP_UPPERCASE, //@别名 大写
    };
    //@隐藏{
    CX_DECLARE_FLAGS(MapFlags, MapFlag);

    //@隐藏{
    static std::unordered_map<cxuint32, std::wstring> _PRIVATE_CODEPAGE_MAP = {
        {US_ASCII, L"US-ASCII"},
        {ISO_8859_1, L"ISO-8859-1"},
        {ISO_8859_2, L"ISO-8859-2"},
        {ISO_8859_3, L"ISO-8859-3"},
        {ISO_8859_4, L"ISO-8859-4"},
        {ISO_8859_5, L"ISO-8859-5"},
        {ISO_8859_6, L"ISO-8859-6"},
        {ISO_8859_7, L"ISO-8859-7"},
        {ISO_8859_8, L"ISO-8859-8"},
        {ISO_8859_9, L"ISO-8859-9"},
        {ISO_8859_10, L"ISO-8859-10"},
        {SHIFT_JIS, L"SHIFT-JIS"},
        {EUC_JP, L"EUC-JP"},
        {EUC_KR, L"EUC-KR"},
        {ISO_2022_KR, L"ISO-2022-KR"},
        {ISO_2022_JP, L"ISO-2022-JP"},
        {ISO_2022_JP_2, L"ISO-2022-JP-2"},
        {GB2312, L"GB2312"},
        {UTF_8, L"UTF-8"},
        {GBK, L"GBK"},
        {GB18030, L"GB18030"},
        {BIG5, L"BIG5"},
        {CP851, L"CP851"},
    };
    //@隐藏}





    使用方法:
    [C++] 纯文本查看 复制代码
    //正确使用方式实际上是  炫::文本编码器::编码取文本编码器(...) 但目前炫IDE还不支持这种写法
    静态 炫::文本编码器 全局编码器;
    炫::文本编码器 * 编码器指针 = 全局编码器.编码取文本编码器(炫::GB2312); //936为gb2312
    文本型A ansi = A"哈哈哈";
    文本型 unicode = 编码器指针->到十六位万国码(ansi); // 从ansi(gb2312)转unicode(utf16)
    文本型A newANSI = 编码器指针->到指定编码(unicode); // 从unicode(utf16)转ansi(gb2312)
    unicode = "龍123"
    unicode = 编码器指针->映射字符串(炫::简体中文, unicode);
    unicode = 编码器指针->映射字符串(炫::全角, unicode);
    
    














  • TA的每日心情
    难过
    2021-3-17 08:38
  • 发表于 2024-2-25 20:52:06 | 显示全部楼层
    大佬厉害,牛逼
  • TA的每日心情
    开心
    2024-4-14 08:17
  • 发表于 2024-2-27 21:47:58 | 显示全部楼层
    知识点很多工作量很大,大佬模块给力!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

    GMT+8, 2024-5-2 12:13 , Processed in 0.086973 second(s), 19 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表