0
点赞
收藏
分享

微信扫一扫

水文-ts中对中文进行base64编码

东林梁 2022-11-15 阅读 128

文章目录

前言

完整代码见仓库。


ts环境准备

参考:如何建立一个新的 TypeScript 项目

# npm install -g ts-node
npm install -g typescript
tsc.cmd --init

我之前安装过nodejs环境:fetch的简单使用。所以不再需要安装nodejs。

我们使用npm安装typescript。关于npm的使用,可以参考npm 模块安装机制简介。至于typescript是一种用于应用程序级 JavaScript 的语言,可以将ts编写的程序编译成js。安装typescript的时候,会包含tsc。

注:上面参考链接中,使用了npx,它可以调用项目内部模块,避免全局安装,可以参考:npx 使用教程。

接着,我们使用tsc.cmd --init,创建一个tsconfig.json。tsconfig.json文件中指定了用来编译这个项目的根文件和编译选项。


ts中对utf8字符串进行base64编码

参考:Using Javascript’s atob to decode base64 doesn’t properly decode utf-8 strings

使用js-base64对utf8字符串进行base64编码。

npm install --save js-base64
# 安装package.json中的依赖
# npm install
# npm uninstall typescript

我用demo测了下,应该能用。

import { Base64 } from 'js-base64'

console.debug("hello world")

const str = "中文"

// Base64
console.debug(Base64.encode(str))
console.debug(Base64.decode(Base64.encode(str)))

先编译,tsc.cmd命令按照tscconfig.json中的配置进行编译,生成js。node.exe .\dist\index.js,使用node命令运行js程序。输出如下。

hello world
5Lit5paH
中文

另外,ts中不能使用下面的方式进行编码转换。会编译报错ReferenceError: window is not defined。原因是nodejs中不能使用window对象,可参考在node.js里面可以使用window对象的方法吗

// window.btoa
console.debug(window.btoa(str))
console.debug(window.atob(window.btoa(str)))
``
举报

相关推荐

0 条评论