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

一、字符集

  • 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将其解码回字符串。
接下来的步骤可能包括:

  • 处理编码或解码过程中可能出现的异常。
  • 处理不同类型的数据,而不仅仅是字符串。
  • 将编码后的数据保存到文件或通过网络发送。
posted @ 2023-06-15 10:40  GroundSoft  阅读(89)  评论(0编辑  收藏  举报