UTF8 到GB2312 的 转换

2023-10-27

这段代码不仅仅是含有UTF8到Unicode的转换,还包括Gb2312,Unicode 到Gb2312 如过不使用Windows API的话,那么自己因该建立一个转化表,这样效率才会好,因为我一时没有找到这种表。如果谁有请贴上来。谢谢。


#include  < string .h >
#include 
< tchar.h >
using   namespace  std;
int  GetNo( char  ch)
... {
    
int i = 0;
    
while (ch & 0x80)
    
...{
        
++i;
        ch 
<<= 1;
    }

    
return i == 0 ? 1 : i;
}

void  UTF8ToUnicode( const   char   * pUtf8,  char   * pUnicode,  int  nBytes)
... {
    
switch (nBytes)
    
...{
    
case 1:
        
*pUnicode = *pUtf8;
        pUnicode 
+= 1;
        
break;
    
case 2:  
        
*pUnicode = ((*(pUtf8 + 1)) & 0x3<< 6 | (*pUtf8) & 0x3f;
        
*(pUnicode + 1= ((*pUtf8) & 0x1f>> 2;
        pUnicode 
+= 2;
        
break;
    
case 3:
        
*pUnicode = ((*(pUtf8 + 1)) & 0x3<< 6 | ((*(pUtf8 + 2)) & 0x3f);
        
*(pUnicode + 1= ((*pUtf8) & 0xf<< 4 | (((*(pUtf8 + 1)) & 0x3f>> 2);
        pUnicode 
+= 2;

        
break;
    
default:
        
break;
    }

    
*pUnicode = '';
}


int   UnicodeToGB2312( char   * pUnicode,  char   * pGb2312,  int  nBytes)
... {
    
int nMultiBytes =::WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, (LPCWSTR)(pUnicode), -1,
        pGb2312, 
0, NULL, NULL);

    
if (nMultiBytes >= nBytes)
        
return -1;

    
int nError = ::WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, (LPCWSTR)(pUnicode), -1,
        pGb2312, nBytes, NULL, NULL);

    
if (nError == 0)
        
return -1;

    
return nMultiBytes - 1;
}


BOOL UTF8ToGb2312(
const   char   * pUtf8,  char   * pGb2312)
... {
    
while (*pUtf8 != '')
    
...{
        
int nBytes = GetNo(*pUtf8);
        TCHAR szUnicode[
5= ...{0};
        UTF8ToUnicode(pUtf8, szUnicode, nBytes);
        
        TCHAR szGb2312[
5= ...{0};
        
int nSize = UnicodeToGB2312(szUnicode, szGb2312, 
            
sizeof(szGb2312) - sizeof(szGb2312[0]));
        
if (nSize == -1 || nSize == 0)
        
...{
            
return FALSE;
        }

        
        CopyMemory(pGb2312, szGb2312, nSize);
        pUtf8 
+= nBytes;        
        pGb2312 
+= nSize ;
    }

    
return TRUE;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UTF8 到GB2312 的 转换 的相关文章

  • PHP:在 CURL GET 调用中使用 API 密钥

    我看过关于使用 api 密钥在curl 中验证 post 调用的帖子 我有一个 GET 调用 需要 apikey 进行授权 即请求必须具有包含 apiKey 的授权标头 我已经获得了 api 密钥并尝试将其用于 GET 调用
  • Python 可执行文件:py2exe 还是 PyInstaller?

    要创建可执行文件 Windows 我假设我们应该使用其中之一 Py2exe 或 PyInstaller 它们之间有什么区别 Py2exe 和 PyInstaller 都是包装器 但我注意到以下几点差异 Py2exe 与 python2 4
  • R 脚本自动化时的不同结果

    以下命令对 pdf 文件执行 Ghostscript 这pdf file变量包含该 pdf 的路径 bbox lt system paste C gs gs8 64 bin gswin32c exe sDEVICE bbox dNOPAUS
  • 使用curl登录并获取会话

    你好 我需要以某种方式获得最高区域的兴趣和随着时间的推移的兴趣 或更好 所以我发现我们必须登录才能导出数据有人可以给我一个使用我们的谷歌用户名和密码执行此操作的示例吗 也许使用curl来导出数据 或者是其他东西 感谢您的关注 亚当 拉马丹
  • 如何让脚本执行结束后自动删除?

    是否可以制作一个Python脚本 在Windows中执行结束时删除 py文件 自删除 这种方式使您的程序不依赖于操作系统 from os import remove from sys import argv remove argv 0 奖励
  • 代码退出-1073741515 (0xc0000135)“未找到依赖的 dll”

    我正在尝试编写一个简单的程序 与 2019 年相比 Windows 10 64 位 调试 gt x64 遵循 将 Visual C 项目配置为面向 64 位平台 1 include
  • 更改desktop.ini不会在Windows中自动更新文件夹图标

    我使用此批处理脚本将所有文件夹和子文件夹的图标更改为位于文件夹中的 ico 文件 但是 资源管理器中的文件夹图标不会改变除非我手动重命名desktop ini将资源管理器中的文件更改为其他内容 然后返回desktop ini或者例如将字母更
  • Swagger 生成 javascript-closure-angular-client

    我是 swagger 的新手 我从 swagger 的在线编辑器生成了一个 javascript 闭包角度客户端 它给了我一个 DefaultAPI js 和其他与我的对象定义匹配的 JS 文件 我在 swagger 文档和网上搜索了一种在
  • Windows 上的 Openssl 错误 0x02001005 和 0x2006D002?

    我正在尝试使用 openssl 将 cer 证书转换为 p12 证书 这是我正在使用的命令 C OpenSSL Win32 bin gt openssl x509 inform der in developer identity cer o
  • python+win32:检测窗口拖动

    有没有办法检测何时使用 python pywin32 在窗口中拖动不属于我的应用程序的窗口 我想对其进行设置 以便当我拖动标题与桌面边缘附近的图案匹配的窗口时 当松开鼠标时它会捕捉到边缘 我可以编写代码 以便在释放鼠标时将所有具有该标题的窗
  • 通过 __get() 通过引用返回 null

    快速规格 PHP 5 3 error reporting 1 the highest 我正在使用 get 通过引用技巧神奇地访问对象中任意深度的数组元素 快速示例 public function get key return isset t
  • Facebook 通过 API“Boost Post”?

    我一直在浏览文档 发现可以通过 Facebook 广告 API 实现 Boost Post 功能 但是 我在查找 Boost Post 到底有什么作用时遇到了一些困难 即 API 的哪一部分对应 Facebook UI 的 Boost Po
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • 以编程方式从 java 代码中查找 java.exe 的绝对路径

    如果我有一个由用户启动的 java jar 或类文件 假设在环境变量中设置了 java 路径 那么我如何从代码中找出 java exe javaw exe 的绝对路径文件正在启动 就像在 ubuntu 上一样 我们可以运行 which ja
  • 在 Windows 上不使用 OpenSSL 从 pfx 文件或证书存储中提取私钥

    正如标题所示 我想在不使用 OpenSSL 或任何其他第三方工具的情况下导出我的私钥 如果我需要一个 cer文件或 pfx我可以通过 MMC 或 PowerShell 轻松导出这些文件pkiclient但我找不到获取私钥的方法 https
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 如何从Windows阻止社交媒体[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想根据时间阻止我的电脑上的社交媒体 晚上 9 点后屏蔽 上午 11 点后解锁 如家长控制 我尝试过关注但失败了 创建了
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • neo4j - python 驱动程序,服务不可用

    我对 neo4j 非常陌生 我正在尝试建立从 python3 6 到 neo4j 的连接 我已经安装了驱动程序 并且刚刚开始执行第一步 导入请求 导入操作系统 导入时间 导入urllib 从 neo4j v1 导入 GraphDatabas

随机推荐

  • go get & go mod找不到包问题解决

    问题一 今天在云虚机中遇到了go get执行报错的问题 报错内容如下 试了ping百度正常 说明不是DNS的问题 执行go mod tidy同样报错 最后找到问题 将GOPROXY由https proxy golang org改为了http
  • SpringBoot:自动装配提速设计

    名词约定 配置类 指使用了 Configuration Component ComponentScan Import ImportResource Bean的类 SpringBoot的设计思想就是通过一个配置类导入多个项目范围内适用的配置类
  • 《零基础入门学习Python》第087讲:Pygame:播放声音和音效

    这节课我们来谈谈 Pygame 中的 播放声音和音效 因为几乎没有任何游戏是一声不吭的 多重的感官体验更能刺激玩家的神经 没有声音的游戏就好比 不蘸番茄的薯条 尽管如此 Pygame 对于声音的处理并不是太理想 我说的是如果你想用 Pyga
  • 线性代数学习笔记——行列式的性质及拉普拉斯定理——11. 拉普拉斯定理

    这节如果不看教学视频而只看PPT的话 很难理解 这充分说明了老师的重要性 1 拉普拉斯 Laplace定理 2 基本结论 三角 对角分块矩阵行列式的计算 3 拉普拉斯定理的应用示例 求行列式 4 分块矩阵的逆的求解
  • ansible批量添加用户账户密码

    一 批量添加root用户以及密码 首先批量添加root 账号密码 不用ssh copy id root ip地址 因为如果ip比较多的情况下 ssh脚本添加会特别的麻烦 步骤1 首先要配置ansible清单 远程主机的密码这里为 12345
  • Idea上传已有项目到git

    开发经常遇到的问题是开发初期没有建立GIT仓库 开发一段时间后 需要将已有代码上传到Git 怎么将已有项目与新建的Git仓库相关联呢 借助Idea可以轻松实现 1 首先使用Git命令行 git clone XXXXX git 将项目下载 2
  • JAVA控制台输出格式

    public class PrintFormat public static void main String args Console print format System out printf format args format为指
  • Python键鼠操作自动化库PyAutoGUI简介

    PyAutoGUI是一个Python语言的键鼠自动化库 简单来说和按键精灵的功能一样 但是因为是Python的类库 所以可以使用Python代码配合一些其他类库完成更加强大的功能 下面让我为大家介绍一下吧 安装 从pip安装即可 pip i
  • 【threejs 】添加标签和射线

    three 添加标签 应用 上一篇文章我们说了世界坐标和屏幕坐标的准换那么有什么应用呢 应用 可以实现该效果 鼠标移动该模块的时候展示该模块的标签 或者可以常显 射线就是当鼠标移动到该模块该模块变化颜色 创建一个标签js文件作为封装的方法
  • 深入理解文字高度和行高的设置

    font size设置的是什么 line height设置的是什么 各种行高是怎么计算出来的 你真的知道吗 1 从font size讲起 说文字高度 当你按住鼠标左键选中一段文字的时候 这段文字背后会有一个颜色变化的区域 这个区域可以近似的
  • 零基础开发WIFI设备(esp8266)

    目录 前言 一 本例程实现功能 二 Core提供的TCP功能介绍 三 接线图 四 材料清单 五 完整代码 通过IP地址和服务器建立连接 代码运行结果 前言 shineblink core 开发板 简称Core 的库函数支持WIFI功能 所以
  • 将websocket通信端口代理到TCP通信端口的方法记录

    websocketproxy代理服务基于go语言实现 功能描述 Proxy of gateway Websockt transfer TCP protocol Websocket gt TCP TCP gt Websocket 即 实现将w
  • 禅道项目管理系统RCE漏洞复现+利用

    1 漏洞概述 禅道研发项目管理软件是国产的开源项目管理软件 专注研发项目管理 内置需求管理 任务管理 bug管理 缺陷管理 用例管理 计划发布等功能 实现了软件的完整生命周期管理 2023年1月6日 互联网披露其旧版本中存在权限绕过与命令执
  • 编写一个方法,将字符串中的空格全部替换为“%20”

    请编写一个方法 将字符串中的空格全部替换为 20 假定该字符串有足够的空间存放新增的字符 并且知道字符串的真实长度 小于等于1000 同时保证字符串由大小写的英文字母组成 给定一个string iniString 为原始的串 以及串的长度
  • 杂凑密码——摘要算法简介

    概念 密码杂凑函数 Cryptographic hash function 又称为密码散列函数 加密散列函数 散列函数的一种 杂凑函数是一种单向函数 要由散列函数输出的结果 回推输入的资料是什么 是非常困难的 散列函数的输出结果 被称为讯息
  • Kotlin inline 关键字

    文章目录 前言 一 inline 是什么 二 未使用 2 使用后 总结 前言 最近又到了面试的季节 今天在面试中被问到了kotlin inline 关键字 感觉回答的不是很好 今天研究一下它 一 inline 是什么 inline 是kot
  • k8s源码解析 - 如何使用yaml创建k8s的资源

    如何初始化k8s中的client 1 kubernetes Clientset 参考链接 集群内访问创建k8s client 直接获取集群内的config 通过config创建clientSet creates the in cluster
  • postconstruct不执行_Spring Boot 应用在启动阶段执行代码的几种方式

    前言 有时候我们需要在应用启动时执行一些代码片段 这些片段可能是仅仅是为了记录 log 也可能是在https dayarch top p pkix certificate import html 诸如上述业务要求我们可能会经常碰到 Spri
  • C# Linq源码分析之Take(五)

    概要 本文在C Linq源码分析之Take 四 的基础上继续从源码角度分析Take的优化方法 主要分析Where Select Take的使用案例 Where Select Take的案例分析 该场景模拟我们显示中将EF中与数据库关联的对象
  • UTF8 到GB2312 的 转换

    这段代码不仅仅是含有UTF8到Unicode的转换 还包括Gb2312 Unicode 到Gb2312 如过不使用Windows API的话 那么自己因该建立一个转化表 这样效率才会好 因为我一时没有找到这种表 如果谁有请贴上来 谢谢 in