字符串和编码
背景:
日常工作中,或多或少的都会遇到编码问题,大都定义为UTF-8 或者GB2312 都能处理,但是总觉得一知半解,今稍微总结下
白话理解:
1.字符编码产生原因:
在计算机底层存储中都是由一串01编码组成的二进制文件,但是人类无法读懂复杂冗长的二进制文件,所以编码的产生就是为了将人类文字和二进制文件相互转换。
2.字符编码(密码本 字符集)的发展史:
字符编码的发展细节查看摘录部分,此处想说的是ASCII、GB2312、GBK、GB18030、UTF8、ANSI、Latin1等编码的产生都是对应时期一个产物,他们的产生都是为了解决对应之前编码的一个问题,所以其兼容性如下
类似例子 如记事本里打“联通”为什么会变成乱码?_菠菜cqb的博客-CSDN博客_联通为什么是乱码(https://blog.csdn.net/spinachcqb/article/details/11616451)
==》UTF-8编码是现在标准的解决方案,当遇到乱码或者编码出错的时候,先想想原本数据是用什么编码存储的,然后使用对应的方式解码就好。单纯从二进制数据是无法判断它是用什么编码存储的。
正是由于不完全兼容,所以经常会出现乱码问题,乱码的原因是编码(加密)和解码(解密)用的不是同一个字符集(密码本)。服务器和计算机内存中统一使用的都是Unicode编码,当需要保存到硬盘或者需要传输的时候,就一般转换为UTF-8编码,但是实际文件保存时部分字符不属于UTF-8 部分,所以utf-8 无法找到正确的码值转换关系就乱码或者解码不正确。综上解决乱码问题的方式就是文件打开和保存都明确指定字符编码,不要让计算机去匹配猜测用哪个编码,有可能猜错的!!!
理论摘录:
学习摘抄原文链接:
1.https://www.liaoxuefeng.com/wiki/1016959663602400/1017075323632896
2.https://blog.csdn.net/huanglong0438/article/details/117652697
3.https://zhuanlan.zhihu.com/p/107943002
4.https://zhuanlan.zhihu.com/p/46216008
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用