一、字符集

  • 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. 案例8:将"picK"的大小写互换

    最终输出结果为PICk. 需要先计算两个字母之间的间隔,比如a和A之间的间隔为多少. 然后在将大写字母转换为小写字母,加上间隔的值: 将小写字母转换为大写字母,减去间隔的值. 示例代码如下: #def ...

  2. navigator.aardio 代码备份

    import win.ui; import console; import process; import string.regex; import libs.router; /*DSG{{*/ ma ...

  3. Vue3 写业务逻辑不适合用TS(TypeScript)

    TypeScript 最重要的就是装饰器 Vue3最重要更新就是Setup 装饰器就是为了打散功能点,Vue3的Setup功能也是打散功能点,那用Vue3上TS,感觉就是自己给自己多一层工作量. 我这 ...

  4. 关于hashCode和equals重写

    规则 只要重写equals,就必须重写hashCode. 用Set存储对象或者用对象作为Map的键时,必须重写hashCode.也就是说,当需要用对象的哈希值来判断对象是否相等时必须重写hashCod ...

  5. C++中fopen的句柄返回NULL

    我们在使用fopen打开文件的时候有时会出现失败返回null情况,但是我们不能直接通过log具体是什么原因导致的,所以这时我们可以通过errno和strerror获取错误码和错误信息. 我遇到的是错误 ...

  6. GCC&&G++ C && C++ 内嵌汇编和调用汇编函数的方法(x86,ARM自己对照改)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  7. PAT 甲级【1015 Reversible Primes】

    考察素数判断 考察进制转换 import java.io.IOException; import java.io.InputStreamReader; import java.io.StreamTok ...

  8. Java基础知识篇04——数组

    哈喽,大家好!我是白夜,今天给大家聊聊数组. 一.概念 计算机在内存区域分配的一段连续的区域(空间),用来存储同种类型的多个数据 简单的理解,数组就是一堆盒子,同一时间,可以保存多个相同数据类型的数据 ...

  9. verilog之时钟信号的编写2

    verilog之时钟信号的编写2 1.时钟信号的特点 时钟信号除了可以根据时序一个个变化列举出来,还可以利用其循环的变化的特点,使用循环执行语句always来实现.这种方法实现的时钟信号可以一直执行且 ...

  10. 英语文档阅读学习系列之ZYNQ-7000 All Programmable SOC Packaging and Pinout

    UG865-Zynq-7000-pkg-pinout 1.Table 一个overview和其他部分的构成一个整体. 2.overview This section describes the pin ...