一、字符集

  • Unicode:Unicode 是一个字符集(Charset),包含了世界上所有的字符。每个字符在 Unicode 中都有其唯一对应的数字编号,这就是我们常说的 Unicode 码。
  • UTF-8:UTF-8 是 Unicode 的实现方式之一。UTF-8 使用一至四个字节为每个字符编码,英文字符通常使用一个字节,西欧其他语言的部分字符使用两个字节,剩下的字符则使用三或四个字节。UTF-8 兼容 ASCII,即 ASCII 可以被看作是 UTF-8 的一部分。
  • UTF-16:UTF-16 也是 Unicode 的实现方式之一。UTF-16 使用两个或四个字节为每个字符编码。对于 Unicode 字符集中前 65536 个字符(即基本多文种平面,包括大部分常用字符),UTF-16 使用两个字节进行编码;对于剩下的字符,UTF-16 使用四个字节进行编码。

    总结来说,Unicode 是一个很大的“字符库”,而 UTF-8 和 UTF-16 是将这些字符转换为计算机可以理解的二进制数据的方法。

二、JS编码和解码

btoa():任意值转为 Base64 编码

atob():Base64 编码转为原来的值

function b64Encode(str) {
return btoa(encodeURIComponent(str));
} function b64Decode(str) {
return decodeURIComponent(atob(str));
} b64Encode('你好') // "JUU0JUJEJUEwJUU1JUE1JUJE"
b64Decode('JUU0JUJEJUEwJUU1JUE1JUJE') // "你好"

总结一下:因为ASCII中的字符只包含了大小写英文字母-数字-标点符号和控制字符,不包含中文和其他字符,因此在编码为Base64字符进行传输和处理之前先要讲原字符串转换为UTF-8字符集。encodeURIComponent()和decodeURIComponent()就是加解密为UTF-8字符集。而btoa()为base64加密,atob()为base64解密。

三、C#中的编码和解码

在C#中,你可以使用System.Text.Encoding类将字符串编码和解码为UTF-8。以下是一个示例:

using System;
using System.Text;
class Program
{
static void Main()
{
string originalString = "你好";
// 编码为UTF-8字节
byte[] utf8Bytes = Encoding.UTF8.GetBytes(originalString);
Console.WriteLine("编码后: " + BitConverter.ToString(utf8Bytes));
// 解码回字符串
string decodedString = Encoding.UTF8.GetString(utf8Bytes);
Console.WriteLine("解码后: " + decodedString);
}
}

这个程序首先使用Encoding.UTF8.GetBytes将字符串编码为UTF-8字节,然后使用Encoding.UTF8.GetString将其解码回字符串。

接下来的步骤可能包括:

  • 处理编码或解码过程中可能出现的异常。
  • 处理不同类型的数据,而不仅仅是字符串。
  • 将编码后的数据保存到文件或通过网络发送。

javascript现代编程系列教程之七——字符数据类型-字符集-编码解码-常用字符串处理方法(七)的更多相关文章

  1. RabbitMQ系列教程之七:RabbitMQ的 C# 客户端 API 的简介(转载)

    RabbitMQ系列教程之七:RabbitMQ的 C# 客户端 API 的简介 今天这篇博文是我翻译的RabbitMQ的最后一篇文章了,介绍一下RabbitMQ的C#开发的接口.好了,言归正传吧. N ...

  2. shell编程系列19--文本处理三剑客之awk中的字符串函数

    shell编程系列19--文本处理三剑客之awk中的字符串函数 字符串函数对照表(上) 函数名 解释 函数返回值 length(str) 计算字符串长度 整数长度值 index(str1,str2) ...

  3. shell编程系列16--文本处理三剑客之awk模式匹配的两种方法

    shell编程系列16--文本处理三剑客之awk模式匹配的两种方法 awk的工作模式 第一种模式匹配:RegExp 第二种模式匹配:关系运算匹配 用法格式对照表 语法格式 含义 RegExp 按正则表 ...

  4. 高德地图 JavaScript API 开发系列教程(一)

    高德地图 API 提供包括 Web API 即 JavaScript API,Android API,定位API,IOS API,WP API,Win8 API等,本系列教程主要针对高德 JavaSc ...

  5. Pytorch系列教程-使用字符级RNN生成姓名

    前言 本系列教程为pytorch官网文档翻译.本文对应官网地址:https://pytorch.org/tutorials/intermediate/char_rnn_generation_tutor ...

  6. Pytorch系列教程-使用字符级RNN对姓名进行分类

    前言 本系列教程为pytorch官网文档翻译.本文对应官网地址:https://pytorch.org/tutorials/intermediate/char_rnn_classification_t ...

  7. 珍藏的C语言编程系列教程

    本文有332个文字,大小约为2KB,预计阅读时间1分钟 这是本人珍藏的C语言.C++系列教程. 相信每个Coder的第一门编程语言就是C语言吧, 现在也依然很热门,不谈了.直接上链接,感兴趣的直接存, ...

  8. javascript 高级编程系列 - 基本数据类型

    javascript中的基本数据类型包括: Undefined, Null, Boolean, Number, String 5种数据类型 1. Undefined 类型 (只有一个值 undefin ...

  9. javascript基础编程の变量、对象、数据类型及函数

    在web标准中.网页由结构.表现形式和行为三个部分组成. 结构标准---->XHTML: 表现形式标准----->CSS: 行为标准----->javascript: javascr ...

  10. Unix/Linux环境C编程入门教程(23) 字符数字那些事儿

    1.atoi 包含头文件: #include <stdlib.h> 函数原型: int atoi( const char *str ); 功能:将字符串str转换成一个整数并返回结果.参数 ...

随机推荐

  1. matlab修改读取mat文件后的变量名

    代码如下: %% str1=load('CH1.mat'); val_names = fieldnames(str1); % 获取结构体后那个未知的变量名 data1 = getfield(str1, ...

  2. WPF之命令

    目录 命令系统的基本元素 基本元素之间的关系 小试命令 WPF的命令库 命令参数 命令与Binding的结合 近观命令 ICommand接口与RoutedCommand 自定义Command 定义命令 ...

  3. 【LLM】在Colab上使用免费T4 GPU进行Chinese-Llama-2-7b-4bit推理

    一.配置环境 1.打开colab,创建一个空白notebook,在[修改运行时环境]中选择15GB显存的T4 GPU. 2.pip安装依赖python包 !pip install --upgrade ...

  4. python学习笔记(2): 函数式编程

    函数式编程 高阶函数 map() map接受一个函数和一个可迭代对象(Iterable),返回一个map对象(Iterator) def f(x): return x*x list(map(f, [1 ...

  5. 使用zxing来生成二维码

    使用zxing来生成二维码 二维码已经成为了现代生活中不可或缺的一部分,无论是商业还是个人使用,二维码都有着广泛的应用.而在二维码的生成过程中,zxing是一款非常优秀的开源库,它提供了一系列的API ...

  6. 像使用stl一样使用线段树 ——AtCoder Library(转载https://zhuanlan.zhihu.com/p/459579152)

    地址:https://zhuanlan.zhihu.com/p/459579152 我这里翻译一下官方的文档. 首先需要满足几个性质. (注意 ∗ 是个操作,不是单纯的一个乘号) 1)操作满足结合律 ...

  7. 喜讯!瑞云科技被授予“海上扬帆”5G融合应用专委会成员单位

    2022年7月19日,5G应用"海上扬帆"行动计划云启航大会暨"海上扬帆"融合应用专委会成立大会在沪成功举办. 受上海信通院工创中心邀请和信任,深圳市瑞云科技有 ...

  8. Deeplink实践原理分析

    目录介绍 01.先看一个场景 02.什么是DeepLink 03.什么是Deferred DeepLink 04.什么是AppLink 05.DeepLink和AppLink核心技术 06.DeepL ...

  9. 记录--P0事故预警

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 背景 某一天,前端小余同学和后端别问我小哥在做登录业务接口对接,出于业务的特殊性和安全性的考虑,她和后端小哥约定"user&qu ...

  10. 从零开始学Spring Boot系列-集成Kafka

    Kafka简介 Apache Kafka是一个开源的分布式流处理平台,由LinkedIn公司开发和维护,后来捐赠给了Apache软件基金会.Kafka主要用于构建实时数据管道和流应用.它类似于一个分布 ...