背景
1、业务背景
公司在处理业务时,需要使用socket传输字符串内容,在A处输入,在B处显示。但反馈说输入表情符号经过传输后,ios会变成问号,PC会乱码。如下情况:
2、表情乱码
表情符号乱码的原因通常与 UTF-8 编码的处理不当有关。表情符号属于 Unicode 中的高码点字符,需要使用 4 个字节来表示。如果在处理这些高码点字符时出现问题,就会导致表情符号乱码。
关于Unicode编码
Unicode 是一种字符编码标准,旨在为世界上所有的文字和符号提供唯一的编码。它的目标是支持全球所有书写系统,涵盖从古代文字到现代符号的广泛字符集。以下是关于 Unicode 编码的一些关键点:
基本概念
- 字符:表示一个书写符号,例如字母、数字、标点符号等。
- 码点:每个字符在 Unicode 标准中的唯一编号,通常表示为 U+XXXX,其中 XXXX 是四位十六进制数。
- 编码形式:将码点转换为字节序列的方式。常见的 Unicode 编码形式包括 UTF-8、UTF-16 和 UTF-32。
Unicode 平面
Unicode 将字符划分为多个平面,每个平面包含 65,536 个码点(从 U+0000 到 U+FFFF)。主要平面包括:
- 基本多文种平面(BMP):从 U+0000 到 U+FFFF,包含大多数常用的字符。
- 补充多文种平面(SMP):从 U+10000 到 U+1FFFF,包含古代文字、音乐符号等。
- 补充表意文字平面(SIP):从 U+20000 到 U+2FFFF,主要用于中日韩表意文字。
- 补充专用区(SSP):从 U+E0000 到 U+EFFFF,用于私人使用的字符。
BMP 是 Unicode 的第一个平面,包含了从 U+0000 到 U+FFFF 的字符编码。它涵盖了大多数常用的字符,包括:
- 拉丁字母
- 希腊字母
- 西里尔字母
- 汉字(中日韩统一表意文字)
- 阿拉伯字母
- 以及其他常用的符号和标点符号
BMP 的设计初衷是为了满足大多数现代文字处理的需求,因此大部分常用的字符都被安排在这个平面内。
高码点字符是指 Unicode 编码中使用较高码点(code point)表示的字符。Unicode 码点的范围是从 U+0000 到 U+10FFFF。
表情符号(emoji):如
标签:字符,字节,编码,pos,JS,乱码,Unicode,._ From: https://www.cnblogs.com/miniwa/p/18362686