UTF-8和GBK互转问题

article/2025/6/17 4:16:27

文章目录

  • 前言
  • 一、UTF-8、GBK、GB2312、Unicode
  • 二、转换原理
    • 1.背景
    • 2.UTF-8编码规则
  • 总结


前言

遇到UTF-8和GBK互转问题,稍微记录一下重点~


一、UTF-8、GBK、GB2312、Unicode

GBK:《汉字内码扩展规范》。简体繁体均支持。
GB2312:《信息交换用的汉字字符集编码》。简体,GBK的未拓展版本。
Unicode:Union code,统一码,是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。大而全。
UTF-8:针对Unicode设计的可变长编码,互联网常用编码方式。

二、转换原理

1.背景

GBK、GB2312等与UTF8之间必须通过Unicode编码才能相互转换,所以我们可以看到,在网上找到的非库函数的代码,均需依赖一个Unicode的字库作为转换的支撑。

2.UTF-8编码规则

基于这个背景,我们再了解一下UTF-8的编码规则:

  1. 对于单字节的符号, 字节的第一位设为0, 后面7位为这个符号的unicode码. 因此对于英语字母, UTF-8编码和ASCII码是相同的.

  2. 对于n字节的符号(n>1), 第一个字节的前n位都设为1, 第n+1位设为0, 后面字节的前两位一律设为10. 剩下的没有提及的二进制位, 全部为这个符号的unicode码.

Unicode符号范围(十六进制)UTF-8编码方式(二进制)
0000 0000 - 0000 007F0xxxxxxx
0000 0080 - 0000 07FF110xxxxx 10xxxxxx
0000 0800 - 0000 FFFF1110xxxx 10xxxxxx 10xxxxxx
0000 0800 - 0000 FFFF1110xxxx 10xxxxxx 10xxxxxx
0001 0000 - 0010 FFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0020 0000 - 03FF FFFF111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0400 0000 - 7FFF FFFF1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

因此,从Unicode转换为UTF-8的主要原理就是:1.判断是否为ASCII码,如果是ASCII码则无需转换;2.如果不是ASCII码,判断当前字符Unicode符号的值处于哪个范围区间,并根据这个区间进行相应的移位和 | 运算操作,最后算出相应的UTF-8的值.
UTF-8转换为Unicode也是类似道理,就不细说了.


总结

简单总结了一下,实际实现过程中可能会遇到大小端的问题。

附一个网址查编码转换:http://www.mytju.com/classcode/tools/encode_utf8.asp
图中编码16进制是字符的UTF-8值


http://chatgpt.dhexx.cn/article/19I5ejdg.shtml

相关文章

Linux操作系统:vim编辑器常用命令

文章目录 前言vim的基本概念vim的基本操作vim正常模式命令集(1)复制与粘贴(2)删除(3)光标移动和定位(4)撤销与反撤销 vim底行模式命令集(1)查找(2…

7.0、Linux-Vim编辑器以及常用命令详解

7.0、Linux-Vim编辑器以及常用命令详解 什么是 Vim 编辑器 -> Vim 是从 vi 发展出来的一个文本编辑器;代码补全、编译以及错误等方便编程的功能特别丰富,在程序员中被广泛使用;简单的来说,vi 是老式的字处理器,不过…

Linux之vi和vim编辑器常用命令

一、一般模式 以vi打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理…

Linux中vi/vim编辑器的常用命令

文章目录 前言vi文本编辑器三种模式命令模式(Command mode)移动光标命令查询命令切换到INTERT切换到VISUAL 输入模式(Insert mode)末行模式(Last line mode) cat 文件名 ——查看文件 vi 文件名 ——编辑文件 vim 文件名 ——编辑文件前言 不掌握vi/vim命令,都不…

Linux中vim编辑器常用命令、文件查找、磁盘挂载、用户管理

Vim 介绍 Vim 是全屏幕纯文本编辑器,是vi编辑器的升级版。 vim 不仅仅兼容vi所有的命令,而且高亮显示,vi只能运行在 UNIX 和 Linux 中,而 vim 可以跨平台运行在Windows,MAC OS 中。 vim 号称 “编辑器之神”&#x…

LINUX-VIM编辑器常用命令大全(超全)

工作模式切换: 按TAB键命令自动补全!!! 一、编辑模式和一般模式常用命令 语法命令功能描述yy复制光标当前一行y 数字 y复制一段(从第几行到第几行)p箭头移动到目的行粘贴u撤销上一步dd删除光标当前行d 数字…

vim编辑器常用命令 (Centos)

1 安装vim编辑器 sudo yum update sudo yum install vim2 设置vim 显示行号 (:set nu) 步骤1:按 ESC 键 退出本机内容模式 步骤2:输入 :set number 或者 :set nu 步骤3:按回车 3 查找 / 步骤1:按 ESC 键 退出本机内容模式 步…

Linux虚拟机中vim编辑器常用命令介绍(二)

1.撤销和恢复撤销: u(undo):撤销上次命令 Ctrlr(redo):恢复撤销的命令(重做) 2.删除文本 x(cut):删除光标所在字符,或者选中文字(5x,删除光标…

Linux虚拟机中vim编辑器常用命令介绍(一)

1.行数移动: 命令 英文 功能 gg go 文件顶部 G go 文件末尾 数字gg go 移动到数字对应行数 数字G go 移动到数字对应行数 :数字 移动到数字对…

10 分钟上手 Vim 编辑器,常用命令大盘点!

点击蓝字 关注我们 #扫码加入专属群# 有诸多福利等你来拿~ 传闻有 240 万的程序员不知道如何退出 Vim 编辑器,真的有这么困难吗?下面给大家整理了一份 Vim 常用命令,让你 10 分钟快速上手 Vim,溜得飞起! 以下命令请在普…

vim编辑器常用命令介绍

本文是对vim各种命令的使用介绍,旨在让大家快速学习掌握 什么是vim vim是Linux环境下一款功能强大、高度可定制的文本编辑工具 vim的工作模式 一般分为6种 普通模式用vim打开一个文件时默认模式,也叫命令模式,允许用户通过各种命令浏览代…

正态总体均值假设检验

单个正态总体均值的检验 (1)sigma已知的u检验(Z检验) #######Z检验 Z检验条件 1.样本量大于30 2.数据之间彼此独立 3.数据正常分布 4.样本量应该相等#单正态总体,方差已知 from scipy import stats from statsmodels.stats import weights…

数学建模之正态分布均值的假设检验

正态分布均值的假设检验 一,假设检验步骤 步骤一:写出原假设和备择假设 步骤二:在原假设成立的条件下,构造一个统计量,该统计量服从某一分布 步骤三:用已知的样本数据带入统计量的公式,得到…

数理统计-假设检验

假设检验 假设检验:根据样本的信息来判断总体是否具有指定的特征。 假设检验可以分为:参数假设检验和非参数假设检验。 1)参数假设检验问题,对总体X的分布函数中的未知参数a,设a的真值为a0,如何通过样本信息检验这个假设? 参数假设检验一般有:单个正太总体参数的假设…

线性回归中的假设检验

线性回归中的假设检验及Python编程 0 引言1 一元线性回归模型2 对于回归方程的检验F检验T检验 一元线性回归的Python编程实现与 statsmodels 包的对比关于多元线性回归 0 引言 本文介绍一元线性回归的基本假设,推导方法和统计检验,然后介绍Python编程实…

概率论:假设检验

http://blog.csdn.net/pipisorry/article/details/51182843 假设检验 假设检验问题分为两类,一类是参数的假设检验,一类是分布的假设检验! 设总体X的分布未知,或 X的某个分布参数 theta未知,对总体分布或分布参数 theta 提出一个假设 "H0" ,然后根据样本所提供的信息…

假设检验之几种检验方法的比较

之前学习概率论与数理统计的时候就不扎实,导致后来面试官在问我什么时候该用什么检验的时候稀里糊涂,最近工作中又遇到了假设检验的问题,所以就想把假设检验这块好好总结一下。 一.什么是假设检验? 假设检验是用来判断样本与样本…

相关系数及假设检验

一.假设检验 1.假设检验步骤 (1)提出假设:原假设和备择假设 (2)在原假设成立的条件下,构造一个检验统计量,该统计量有一个分布 (3)在给定置信水平下,求出…

假设检验流程

假设检验相关知识 原假设 原假也称为零假设,一般用H0表示。原假设一般是统计者想要拒绝的假设。 备选假设 备选假设用H1表示。备则假设是统计者想要接受的假设,而且备选假设和原假设一般为互斥假设。 例子:H0: H1: 显著…

概论_第8章_假设检验的基本步骤__假设检验的类型

一. 假设检验的基本步骤 如下: 第1步 根据实际问题提出原假设 及备择假设 , 要求 与 有且仅有一个为真; 第2步 选取适当的检验统计量, 并在原假设 成立的条件下确定该检验统计量的分布; 第3步 按问题的具体要求, 选取…