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将其解码回字符串。
接下来的步骤可能包括:
- 处理编码或解码过程中可能出现的异常。
- 处理不同类型的数据,而不仅仅是字符串。
- 将编码后的数据保存到文件或通过网络发送。
javascript现代编程系列教程之七——字符数据类型-字符集-编码解码-常用字符串处理方法(七)的更多相关文章
- RabbitMQ系列教程之七:RabbitMQ的 C# 客户端 API 的简介(转载)
RabbitMQ系列教程之七:RabbitMQ的 C# 客户端 API 的简介 今天这篇博文是我翻译的RabbitMQ的最后一篇文章了,介绍一下RabbitMQ的C#开发的接口.好了,言归正传吧. N ...
- shell编程系列19--文本处理三剑客之awk中的字符串函数
shell编程系列19--文本处理三剑客之awk中的字符串函数 字符串函数对照表(上) 函数名 解释 函数返回值 length(str) 计算字符串长度 整数长度值 index(str1,str2) ...
- shell编程系列16--文本处理三剑客之awk模式匹配的两种方法
shell编程系列16--文本处理三剑客之awk模式匹配的两种方法 awk的工作模式 第一种模式匹配:RegExp 第二种模式匹配:关系运算匹配 用法格式对照表 语法格式 含义 RegExp 按正则表 ...
- 高德地图 JavaScript API 开发系列教程(一)
高德地图 API 提供包括 Web API 即 JavaScript API,Android API,定位API,IOS API,WP API,Win8 API等,本系列教程主要针对高德 JavaSc ...
- Pytorch系列教程-使用字符级RNN生成姓名
前言 本系列教程为pytorch官网文档翻译.本文对应官网地址:https://pytorch.org/tutorials/intermediate/char_rnn_generation_tutor ...
- Pytorch系列教程-使用字符级RNN对姓名进行分类
前言 本系列教程为pytorch官网文档翻译.本文对应官网地址:https://pytorch.org/tutorials/intermediate/char_rnn_classification_t ...
- 珍藏的C语言编程系列教程
本文有332个文字,大小约为2KB,预计阅读时间1分钟 这是本人珍藏的C语言.C++系列教程. 相信每个Coder的第一门编程语言就是C语言吧, 现在也依然很热门,不谈了.直接上链接,感兴趣的直接存, ...
- javascript 高级编程系列 - 基本数据类型
javascript中的基本数据类型包括: Undefined, Null, Boolean, Number, String 5种数据类型 1. Undefined 类型 (只有一个值 undefin ...
- javascript基础编程の变量、对象、数据类型及函数
在web标准中.网页由结构.表现形式和行为三个部分组成. 结构标准---->XHTML: 表现形式标准----->CSS: 行为标准----->javascript: javascr ...
- Unix/Linux环境C编程入门教程(23) 字符数字那些事儿
1.atoi 包含头文件: #include <stdlib.h> 函数原型: int atoi( const char *str ); 功能:将字符串str转换成一个整数并返回结果.参数 ...
随机推荐
- mainWindow = new BrowserWindow 打开慢的原因 electron 已解决 Windows Defender 拦截导致
Windows Defender 导致拦截 不是变量的事儿 解决方案: win10 开始 设置 - windows 安全中心 - 病毒和威胁防护 - 病毒和威胁防护设置 - 排除项 - 添加排除项 将 ...
- vue入门教程之-属性、事件和双向绑定
vue入门教程之-属性.事件和双向绑定 欢迎关注博主公众号「java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 免费领取全网最热的Java架构师学习PDF, 转载请注明出处 htt ...
- kettle教程--通过配置文件同步所需要的列数据
kettle教程--通过配置文件同步所需要的列数据 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「kettle」, 免费领取全网最热的kettle实战视频教程 ht ...
- JavaScript js 教程 视频教程
一个完整的JavaScript实现应该由以下三个部分构成: ECMAScript,DOM和BOM 1 特点: JS的特点 解释型语言 类似于 C 和 Java 的语法结构 动态语言 基于原型的面向对象 ...
- Android Studio自带模拟器无法访问网络问题解决
测试APP的时候,发现Android Studio自带的模拟器访问不了百度等网站,之前一直用的好好的,觉得可能是版本的问题,也有可能是公司网络的问题(因为在家里的电脑的Android Studio的模 ...
- day03-分析SpringBoot底层机制
分析SpringBoot底层机制 Tomcat启动分析,Spring容器初始化,Tomcat如何关联Spring容器? 1.创建SpringBoot环境 (1)创建Maven程序,创建SpringBo ...
- Oss流程分析
最新式上传方案是:前端上传获取token,然后token中带有bucket.账号.回调地址等相关信息,前端直接上传到阿里云,阿里云上传成功后回调之前设定好的地址,完成上传.(下图是技术负责人的图,盗来 ...
- 聊聊ChatGLM-6B医疗数据微调
转载请注明出处: https://www.cnblogs.com/zhiyong-ITNote/ 参考了多个医疗大模型,如扁鹊.灵心等,重新思考了下微调的方案以及数据集的格式:基于ChatGLM/其它 ...
- 在Ubuntu14.04上安装qt5和qtcreator的 两种方式(源代码和xxxxx.run) 和我的感悟-------超级详细版
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文发布于 2014-07-25 12:21:13 ...
- Spring Boot自动运行之 CommandLineRunner、ApplicationRunner和@PostConstruct
在使用Spring Boot开发的工作中,我们经常会需要遇到一种功能需求,比如在服务启动时候,去加载一些配置,去请求一下其他服务的接口.Spring Boot给我们提供了三种常用的实现方法: 第一种是 ...