当前位置: 首页 > news >正文

字符串编码,编码转换与字符串常见操作

一字符串编码核心基础1. 为什么需要编码计算机只识别二进制0/1文本、汉字、符号等字符必须通过编码规则转换成二进制存储/传输读取时再按对应规则解码还原字符。编码本质字符 ↔ 二进制字节 的映射表。2. 主流编码标准详解1ASCII 编码美国信息交换标准码范围仅包含英文字母、数字、英文符号、控制字符共128个字符。存储1字节(8bit)最高位为0。缺陷不支持中文、日文、韩文等非英文字符仅适用于英语国家。2GB2312 / GBK / GB18030中文系列编码专为中文设计国内早期通用编码1. GB2312收录6763个常用汉字 英文、符号。规则英文占1字节汉字占2字节。2. GBK扩展国标兼容 GB2312收录两万多汉字、繁体、生僻字。国内 Windows 系统默认简体中文编码。3. GB18030最新国标兼容 GBK支持少数民族文字、超大字符集。字节长度可变1/2/4字节。3Unicode统一字符集全球通用字符集目标是收录全世界所有语言字符只定义字符与编号的对应关系不规定存储格式。每个字符分配唯一码点Code Point例如 中 的码点为 U4E2D 。单纯 Unicode 不能直接用于存储/传输必须搭配UTF 编码方案。4UTF 系列Unicode 传输格式最常用基于 Unicode 的实际存储/传输编码互联网、编程语言主流标准。1. UTF-8使用最广变长编码1~4字节。英文字母、符号1字节完全兼容 ASCII常用中文3字节生僻字/特殊符号4字节优势体积小、跨平台、网络传输首选Linux、Mac、网页、Python 默认编码。2. UTF-16基本字符固定2字节生僻字符4字节。应用Windows 内核、Java 内部字符串、部分桌面软件。分 UTF-16LE小端、UTF-16BE大端存在字节序BOM问题。3. UTF-32所有字符固定4字节空间占用极大。极少用于传输仅部分底层程序使用。3. 编码、解码、乱码本质编码encode字符串 → 字节 str → bytes 解码decode字节 → 字符串 bytes → str 乱码根源编码和解码使用的规则不一致。例用 GBK 编码的字节强行用 UTF-8 解码必然出现乱码。4. 字节bytes与字符串str区别类型 含义 特征str 人类可读文本字符串 逻辑字符无字节概念Python 内部用 Unicodebytes 原始二进制数据字节串 以 bxxx 表示存储 0~255 数字用于文件、网络传输二字符串编码转换以 Python 为例通用逻辑全语言适用Python 是编码转换最典型的语言核心方法字符串.encode(编码格式) 编码 → 得到 bytes字节串.decode(编码格式) 解码 → 得到 str1. 基础编码/解码示例2. 跨编码转换UTF-8 ↔ GBK转换公式 原编码字节 → 解码为字符串 → 再编码为目标字节3. 乱码处理与异常捕获解码失败会抛出 UnicodeDecodeError 常用容错参数errorsignore 忽略无法解码的字节简单粗暴errorsreplace 用 替换乱码字符errorsstrict 默认报错终止推荐开发阶段使用4. 文件读写编码高频场景文件乱码 90% 源于读写编码不匹配5. 常见平台编码总结Linux / Mac / 网页 / 接口默认 UTF-8老旧 Windows 文本文件GBK/GB2312数据库MySQL推荐统一使用 utf8mb4 完整 UTF-8支持表情三字符串常见操作通用语法Python实操字符串是不可变序列内容一旦创建不能原地修改修改会生成新字符串一基础访问与遍历1.索引取值下标字符串字符从左往右下标012……从右往左负索引-1,-2……2.切片截取字串语法字符串[起始结束步长]遵循左闭右开原则例[ab)3.遍历字符串二字符串判断类操作返回布尔值True/False1.判断是否为空2.首尾判断startswith子串是否以指定内容开头endswith子串是否以指定内容结尾3.字符类型判断isalpha全字母isdigit全数字isalnum字母数字无符号isspace全空格/空白符4.成员判断in / not in 判断子串是否存在四查找与统计1.find/ rfind查找子串位置find从左往右找找不到返回-1rfind从右往左找找不到返回-1可以设置开始位置结束位置步长2.index/ rindex功能同find/rfind区别找不到直接报错3.count子串统计子串出现过的次数五修改替换分割拼接注字符串不可变所有修改方法都返回新字符串原字符串不变1.大小写转换upper全部大写lower全部小写title每个单词首字母大写2替换内容 replace旧串新串替换次数count用来限制替换的最大次数count 1只替换从左往右找到的第一个匹配内容后面找到的都不动不写count默认替换全部匹配到的内容python里count 可以省略如果匹配内容数量 count有多少就替换多少不会报错字符串本身不可变replace不会改原字符串只会返回新字符串3.去除空白字符 stripstrip去除左右空格换行制表符lstrip只去左侧rstrip只去右侧4.分割字符串 split分隔符将字符串按指定符号切分为列表默认按空白分割5.列表拼接为字符串 join语法连接符.join可迭代对象拼接效率远高于 等明天写
http://www.rkmt.cn/news/1400025.html

相关文章:

  • 别再让滑模观测器抖得你心慌!手把手教你搞定PMSM无感控制中的低通滤波与相位补偿
  • 从匈牙利算法到Jonker-Volgenant:深入scipy.optimize.linear_sum_assignment的算法内核与性能对比
  • Windows 系统手把手安装 OpenClaw,零基础部署教程
  • 告别卡顿!在CIM/UE5大场景中,这几种LOD切换策略到底该怎么选?
  • SkinnedMeshRenderer.SetBlendShapeWeight踩坑实录:从代码驱动BlendShape到性能优化
  • Bolt-On工程哲学:非侵入式模块化扩展的设计与实践
  • 迷失在数字里:严筱磊带领的盒马,变了味?
  • 2026年,揭秘广告咨询公司如何引领市场新潮流
  • 一步到位的宝塔面板修复与重装命令清单
  • LeftMenu.ocx文件丢失找不到 免费下载方法分享
  • 别急着降级Gradle!先试试这招:彻底清理Android项目构建缓存与依赖的完整流程
  • 别再乱设环境变量了!实测Vivado调用Modelsim的正确姿势(Win10系统)
  • 基于WebGPU的浏览器端轻量级大语言模型推理实践
  • 隐私保护机器学习中OT扩展协议的性能优化与Ironman加速器设计
  • 间充质干细胞有哪些神奇的特质?
  • 解决C51内联汇编跳转范围错误的方法与优化技巧
  • 别再只调FOV了!Unity Camera组件这5个隐藏设置,让你的游戏画面质感飙升
  • AI幻觉深度剖析:从Claude虚构NeuroSync API看大模型事实核查
  • 如何3步搞定Windows“此电脑”中删不掉的顽固快捷方式?
  • 2026 AI Agent元年!掌握这波红利,下一个独角兽就是你!
  • 千问 LeetCode 2732. 找到矩阵中的好子集 Go实现
  • 【YOLO目标检测全栈实战】82 边缘部署中的模型量化:从FP32到INT8,精度与速度的终极博弈
  • 【YOLO目标检测全栈实战】80 YOLO推理加速:动态批处理与自适应负载均衡
  • 边缘计算中的轻量级神经网络架构LAERC解析
  • 飞算 Java AI 智能编程
  • AI辅助固件开发:R-P-E-T四步法提升嵌入式开发效率
  • DataWeave实战:动态构建LLM提示词的两大陷阱与解决方案
  • 曲率感知优化框架:破解PINN训练瓶颈的轻量级方案
  • 避坑指南:Unity ShaderGraph中Input节点在URP和HDRP下的兼容性问题详解
  • 从‘刷车没颜色’说起:深入理解UE4材质Usage属性,避免打包后的材质‘罢工’