首页 > 其他分享 >关于JS里的字符表情乱码

关于JS里的字符表情乱码

时间:2024-08-16 13:37:30浏览次数:12  
标签:字符 字节 编码 pos JS 乱码 Unicode ._

背景

1、业务背景

公司在处理业务时,需要使用socket传输字符串内容,在A处输入,在B处显示。但反馈说输入表情符号经过传输后,ios会变成问号,PC会乱码。如下情况:

2、表情乱码

表情符号乱码的原因通常与 UTF-8 编码的处理不当有关。表情符号属于 Unicode 中的高码点字符,需要使用 4 个字节来表示。如果在处理这些高码点字符时出现问题,就会导致表情符号乱码。

关于Unicode编码

Unicode 是一种字符编码标准,旨在为世界上所有的文字和符号提供唯一的编码。它的目标是支持全球所有书写系统,涵盖从古代文字到现代符号的广泛字符集。以下是关于 Unicode 编码的一些关键点:

基本概念

  1. 字符:表示一个书写符号,例如字母、数字、标点符号等。
  2. 码点:每个字符在 Unicode 标准中的唯一编号,通常表示为 U+XXXX,其中 XXXX 是四位十六进制数。
  3. 编码形式:将码点转换为字节序列的方式。常见的 Unicode 编码形式包括 UTF-8、UTF-16 和 UTF-32。

Unicode 平面

Unicode 将字符划分为多个平面,每个平面包含 65,536 个码点(从 U+0000 到 U+FFFF)。主要平面包括:

  1. 基本多文种平面(BMP):从 U+0000 到 U+FFFF,包含大多数常用的字符。
  2. 补充多文种平面(SMP):从 U+10000 到 U+1FFFF,包含古代文字、音乐符号等。
  3. 补充表意文字平面(SIP):从 U+20000 到 U+2FFFF,主要用于中日韩表意文字。
  4. 补充专用区(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

相关文章

  • 基于nodejs+vue码头船只出行及配套货柜码放管理[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着全球贸易的持续增长,港口作为连接国内外市场的重要枢纽,其运营效率与管理水平直接影响到物流链的顺畅与成本效益。码头作为港口的核心区域,船只的出行安排......
  • 基于nodejs+vue码上公益平台系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,互联网已成为推动社会公益事业创新与发展的重要力量。传统公益模式在信息传播、资源调配、参与便捷性等方面面临诸多挑战,难以高效覆......
  • 基于nodejs+vue马寨工业园区招商管理系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着全球经济一体化的深入发展,工业园区作为区域经济发展的重要载体,其招商引资工作日益成为推动地方经济增长的关键环节。马寨工业园区作为区域经济发展的重......
  • 基于nodejs+vue码上招聘云平台[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在数字化时代,互联网技术的飞速发展正深刻改变着各行各业,招聘行业也不例外。传统招聘模式受限于地域、时间、信息不对称等因素,导致企业难以快速精准地找到合......
  • JS中【回调函数】知识点讲解
    回调函数(CallbackFunction)是JavaScript中非常重要的概念,尤其是在处理异步操作时广泛使用。回调函数是一种通过参数传递的函数,在特定的操作或事件完成后,由另一个函数调用执行。基本概念函数作为参数:在JavaScript中,函数是一等公民,可以像变量一样传递给其他函数。当......
  • 力扣 | 一维简单线性dp | 2140. 解决智力问题、322. 零钱兑换、2466. 统计构造好字符
    文章目录一、2140.解决智力问题二、322.零钱兑换三、2466.统计构造好字符串的方案数四、91.解码方法五、983.最低票价六、790.多米诺和托米诺平铺需要特别注意的题目有2140.解决智力问题和983.最低票价,因为这两个题目可以启发思路,其他的题都比较普通。一、21......
  • Python格式化字符串大全
    Python提供了多种方式来格式化字符串,以下是主要的几种方法,我会用一个新的例子来展示它们的用法。假设我们有三个变量name,age,和city,我们想要打印一句话:“Hello,mynameisAlice,Iam30yearsoldandIliveinNewYork.”%操作符这是较早的格式化方法,又称为格式化字符......
  • 字符串
    结尾结束标记:\0//字符串定义两种方法:charstr1[4]="abc";//以\0结尾,多预留长度,可修改字符串内容char*str2="abc";//以\0结尾,这种定义方法将底层数组存放在只读常量区,可以复用不能修改char*str2="abcd";char*str3="abcd";printf("%p\n%p",str2,str3);//初始化字符串:char......
  • JS DOM 对象的节点操作
    目录一、什么是加载时间onload二、各种节点的获取方法1、元素节点的获取(1)通过标签名获取:       document.getElementsByTagName('标签名')(2)通过id获取         document.getElementById('id的名称')2、文本节点的获取举个栗子3、兄弟节点(1)nextSiblin......
  • 【C语言题目】计算某字符出现次数
    描述题目描述写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)数据范围:1≤n≤1000输入描述第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)输出描述输出......