字符编码知识以及相互之间的转换

简介: UTF-16(UCS-2)是Unicode的其中一个使用(实现)方式,大部分字符采用定长的字节存储,即字符属于宽字符,但UTF-16却无法兼容于ASCII编码。

UTF-16(UCS-2)是Unicode的其中一个使用(实现)方式,大部分字符采用定长的字节存储,即字符属于宽字符,但UTF-16却无法兼容于ASCII编码。

UTF-8是Unicode的一个使用(实现)方式,编码格式兼容ASCII编码,采用变长的字节存储字符,即字符属于多字节字符。

windows(C语言)在使用unicode的时候就是采用的UTF-16,即宽字符。

UTF-16比起UTF-8,好处在于大部分字符都以固定长度的字节 (2字节) 储存。

以下是以windows为例的几种字符转换:

1、UTF8转UNICODE

MultiByteToWideChar(CP_UTF8,0,utf8_code,strlen(utf8_code),unicode,strlen(utf8_code));

2、UNICODE转UTF8

WideCharToMultiByte(CP_UTF8,0,unicode,wcslen(unicode),utf8_code,wcslen(unicode),0,0);

3、UTF8与ASCII的相互转换

因为UTF8兼容ASCII所以在进行ASCII字符编码处理的时候,UTF8可以不用转换就可以正确的处理ASCII字符,而在用UTF8进行其他语言字符编码处理的时候就会因为编码问题而出现问题,因为操作系统包括windows在内部数据处理的时候都会统一一种编码方式,通常是ASCII编码形式,然后根据地区以及使用的语言和字符编码不同再进行相应的编码转换,从而正确完成字符编码和字符集(codepage)的匹配,达到正确处理数据的目的。

乱码是可以显示当前指定的字体和文字,但是因为字符的编码不对导致在显示的时候索引错误。

还有一种情况是出现口口口口,所有的都是口,这样的情况是因为缺少字库。

在内存中最小的单位是字节,而最小的文字单位是字符(包括汉字以及其他语言形式),在进行编码存储的时候两者不一定相互对应,即一个字符不一定只占一个字节,所以在进行数据处理的时候需要根据字符进行处理,一段char类型内存可以存储任何字符的编码,但是编解码方式都是按照ASCII单字节对应单个字符的形式,而这种编解码方式只适用于英文字符,对于其他语言字符则会出现问题,而出现乱码的根本原因是编码方式和解码方式不一致。

比如:编码方式采用的是UTF8,而解码的时候却是用的ASCII,或者编码采用的GBK,而解码却是UTF8,这些情况下都会出现乱码,解决办法也很简单,就是统一编解码方式。

不同的codepage对应不同语言字符,不同的语言字符编码方式可能不同,统一的编码方式是unicode。


一、UTF8转ASCII

先把UTF8转换为UNICODE,再从UNICODE转换为ASCII,变的是编码方式,这样在进行输出的时候就可以根据codepage和具体字符编码输出正确的结果,而不会出现乱码。

二、ASCII转UTF8

先把ASCII转换为UNICODE,再从UNICODE转换为UTF8。


相关实践学习
如何快速创建插件agent
阿里云百炼应用基于Assistant API技术架构,结合大语言模型(LLM)的推理、知识检索增强、插件调度等能力,构建应对各类复杂场景任务的场景应用。通过集成化、直观易用的产品界面,为开发者提供了丰富的应用配置选项,包括大型语言模型(LLM)选择、Pro
目录
相关文章
|
4月前
|
机器学习/深度学习 人工智能 测试技术
【自定义插件系列】0基础在阿里云百炼上玩转大模型自定义插件
本文介绍了如何在阿里云百炼平台上创建大模型自定义插件,以增强AI模型功能或适配特定需求。通过编程接口(API)或框架设计外部扩展模块,开发者可在不修改底层参数的情况下扩展模型能力。文章以万相文生图V2版模型为例,详细说明了创建自定义插件的五个步骤:新建插件、创建工具、测试工具、复制第二个工具及最终测试发布。同时,提供了官方文档参考链接和具体参数设置指导,帮助用户轻松实现插件开发与应用,推动AI技术在各行业的广泛应用。
1271 156
|
1月前
|
人工智能 安全 机器人
无代码革命:10分钟打造企业专属数据库查询AI机器人
随着数字化转型加速,企业对高效智能交互解决方案的需求日益增长。阿里云AppFlow推出的AI助手产品,借助创新网页集成技术,助力企业打造专业数据库查询助手。本文详细介绍通过三步流程将AI助手转化为数据库交互工具的核心优势与操作指南,包括全场景适配、智能渲染引擎及零代码配置等三大技术突破。同时提供Web集成与企业微信集成方案,帮助企业实现便捷部署与安全管理,提升内外部用户体验。
270 11
无代码革命:10分钟打造企业专属数据库查询AI机器人
|
3月前
|
人工智能 运维 数据可视化
阿里云百炼 MCP服务使用教程合集
阿里云百炼推出首个全生命周期MCP服务,支持一键部署、无需运维,具备高可用与低成本特点。该服务提供多类型供给、低成本托管及全链路工具兼容,帮助企业快速构建专属智能体。MCP(模型上下文协议)作为标准化开源协议,助力大模型与外部工具高效交互。教程涵盖简单部署、GitHub运营、数据分析可视化及文档自动化等场景,助您快速上手。欢迎加入阿里云百炼生态,共同推动AI技术发展!
4370 54
阿里云百炼 MCP服务使用教程合集
|
11天前
|
人工智能 Java Spring
【保姆级图文详解】大模型、Spring AI编程调用大模型
【保姆级图文详解】大模型、Spring AI编程调用大模型
849 10
【保姆级图文详解】大模型、Spring AI编程调用大模型
|
1月前
|
存储 人工智能 自然语言处理
几分钟创建一个带有业务数据的AI智能客服
本文介绍如何利用阿里云百炼和AppFlow快速创建企业微信客服或网页客服。首先,通过上传企业知识文件和创建大模型问答应用,获取AI推理API服务;接着,在AppFlow控制台新建AI助手并导入配置好的模型,设置对话背景、欢迎语及预设问题等;最后,选择Web集成或企业微信集成方式部署客服系统。整个过程简单易操作,无需技术背景,适合非技术人员使用。文章还提到支持自定义域名绑定以及更多渠道发布选项,助力企业高效搭建专属智能客服。
294 13
几分钟创建一个带有业务数据的AI智能客服
|
1月前
|
Java 数据处理
阿里云百炼工作流支持多模型协同标注,三模型投票分类用户意图实战
本文介绍了一种基于多模型协作的高效分类工作流方案,用于解决传统标注工作中人力依赖大、易出错的问题。通过通义千问系列的 Qwen-Plus、Qwen-Max 和 Qwen3-30b-a3b 三大模型,结合投票机制,实现售前售后意图识别的精准分类。文中详细讲解了如何在阿里云百炼应用广场创建任务型工作流,包括模型节点配置、条件判断设置及测试发布全流程。此外,还提供了批量打标的 Java 示例代码,适用于更复杂的意图标注场景。跟随文章步骤,即可快速构建高效率、高准确性的分类系统。
308 15
阿里云百炼工作流支持多模型协同标注,三模型投票分类用户意图实战
|
15天前
|
人工智能 NoSQL Java
LangChain4j 项目概览
LangChain4j 是一个专为 Java 开发者设计的大语言模型 (LLM) 集成框架,旨在简化 Java 应用程序与各种 LLM 提供商的集成过程。该项目受到 Python 的 LangChain、Haystack、LlamaIndex 等框架的启发,为 Java 生态系统提供了强大而统一的 LLM 工具链。
420 7
|
11天前
|
人工智能 开发框架 自然语言处理
【保姆级图文详解】探秘 Prompt 工程:AI 交互的关键密码
【保姆级图文详解】探秘 Prompt 工程:AI 交互的关键密码
765 5
【保姆级图文详解】探秘 Prompt 工程:AI 交互的关键密码
|
2月前
|
搜索推荐 Java 定位技术
Java实现利用GeoLite2-City.mmdb根据IP定位城市的方法
在城市,国家,地区等地理位置数据获取之后,你可以依指定的业务需求,来进行进一步的数据处理。例如,你可以设计一个应用,根据用户的 IP 地址来个性化地展示内容,或者用于分析网络请求的来源等。
402 20
|
1月前
|
Linux Shell 网络安全
【Azure App Service】使用 tcpping 来获取App Service的网络状态并把结果保存到文本文件中
本文针对云服务使用中网络状态抖动的问题,以Azure App Service为例,介绍如何利用其自带的`tcpping`工具检测网络连通性。通过在Windows或Linux版App Service中执行`tcpping`命令,将结果输出至文本文件,分析timeout行数以判断网络抖动的时间点。文章还提供了具体操作步骤、效果图及参考资料,帮助用户高效排查网络问题。
130 47