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

本文涉及的产品
多模态交互后付费免费试用,全链路、全Agent
简介: 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。


目录
相关文章
|
1月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
285 120
|
1月前
|
存储 Java API
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
310 188
|
1月前
|
安全 Java API
Java中的Lambda表达式:简洁与功能的结合
Java中的Lambda表达式:简洁与功能的结合
342 211
|
机器学习/深度学习 人工智能 测试技术
【自定义插件系列】0基础在阿里云百炼上玩转大模型自定义插件
本文介绍了如何在阿里云百炼平台上创建大模型自定义插件,以增强AI模型功能或适配特定需求。通过编程接口(API)或框架设计外部扩展模块,开发者可在不修改底层参数的情况下扩展模型能力。文章以万相文生图V2版模型为例,详细说明了创建自定义插件的五个步骤:新建插件、创建工具、测试工具、复制第二个工具及最终测试发布。同时,提供了官方文档参考链接和具体参数设置指导,帮助用户轻松实现插件开发与应用,推动AI技术在各行业的广泛应用。
1532 0
|
8天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1196 4
|
8天前
|
人工智能 监控 搜索推荐
给RAG打分:小白也能懂的AI系统评测全攻略
RAG系统评估听起来高深,其实跟我们生活中的'尝鲜评测'没啥两样!本文用轻松幽默的方式,带你从检索质量、生成质量到用户体验,全方位掌握如何科学评测RAG系统,避免踩坑,让你的AI应用又快又准。#RAG技术 #AI评估 #信息检索 #大模型 #数据科学
|
关系型数据库 MySQL 数据挖掘
MySQL - binlog同步过程
MySQL - binlog同步过程
652 0
|
3月前
|
人工智能 安全 机器人
无代码革命:10分钟打造企业专属数据库查询AI机器人
随着数字化转型加速,企业对高效智能交互解决方案的需求日益增长。阿里云AppFlow推出的AI助手产品,借助创新网页集成技术,助力企业打造专业数据库查询助手。本文详细介绍通过三步流程将AI助手转化为数据库交互工具的核心优势与操作指南,包括全场景适配、智能渲染引擎及零代码配置等三大技术突破。同时提供Web集成与企业微信集成方案,帮助企业实现便捷部署与安全管理,提升内外部用户体验。
427 12
无代码革命:10分钟打造企业专属数据库查询AI机器人
|
人工智能 运维 数据可视化
阿里云百炼 MCP服务使用教程合集
阿里云百炼推出首个全生命周期MCP服务,支持一键部署、无需运维,具备高可用与低成本特点。该服务提供多类型供给、低成本托管及全链路工具兼容,帮助企业快速构建专属智能体。MCP(模型上下文协议)作为标准化开源协议,助力大模型与外部工具高效交互。教程涵盖简单部署、GitHub运营、数据分析可视化及文档自动化等场景,助您快速上手。欢迎加入阿里云百炼生态,共同推动AI技术发展!
5920 0