如何将JavaScript中的字符串转换为字节序列?

如何将JavaScript中的字符串转换为字节序列?,javascript,string,Javascript,String,在Python3中,要将字符串转换为字节序列,可以使用string.encode(ENCODING)其中ENCODING是要使用的编码的名称。如果字符串中的某个字符的代码点大于255,则该字符仍将转换为字节数组。如果需要对字符串进行操作,例如密码的演示,这将非常有用。文本可以使用ByteArray.decode(ENCODING)重建 我还没有看到类似的JavaScript。有String.charCodeAt(),但这会将Ā这样的字符转换为256。这不是我想要的。您可以使用标准直接读取字节:

在Python3中,要将字符串转换为字节序列,可以使用
string.encode(ENCODING)
其中
ENCODING
是要使用的编码的名称。如果字符串中的某个字符的代码点大于255,则该字符仍将转换为字节数组。如果需要对字符串进行操作,例如密码的演示,这将非常有用。文本可以使用
ByteArray.decode(ENCODING)
重建


我还没有看到类似的JavaScript。有
String.charCodeAt()
,但这会将
Ā
这样的字符转换为
256
。这不是我想要的。

您可以使用标准直接读取字节:


您可以使用
textcoder()
.encode()
textdecker()
.decode()
方法

let decoder = new TextDecoder(/* character encoding */);
let encoder = new TextEncoder();

let encoded = encoder.encode(str);
let decoded = decoder.decode(encoded);
“为……密码对字符串进行操作”:可能不是

密码是字节数组的数学变换。加密的结果不是文本,因此不能直接存储在字符串中

JavaScript字符串是UTF-16代码单元的计数序列。(也适用于VB4/5/6、VB、VBA、VBScript、C#、Java……)UTF-16是Unicode字符集的几种编码之一。UTF-8是另一个。两者都不对任意二进制数据进行编码/解码

您提到了
String.charCodeAt()
。这只提供字符串中的一个UTF-16代码单元


以字符串形式携带和显示二进制数据的常用方法是Base64和十六进制。这种方式更为重要,发送方和接收方必须就字符串的字符编码和二进制到文本的转换达成一致,但许多系统宁愿传递文本而不是二进制。

我没有使用文件。@Melab代码中的
文件读取器
正在读取一个blob,而不是一个文件。仔细看看代码,我知道加密操作不是直接在字符串上执行的。这就是我试图在字符串和字节数组之间转换的原因。在Python3中,通过使用拉丁-1编码,结果当然可以存储为字符串。好的,但是JavaScript字符串是UTF-16。那么,您是否希望将字节转换为Latin1,并将其存储在字符串中?
let decoder = new TextDecoder(/* character encoding */);
let encoder = new TextEncoder();

let encoded = encoder.encode(str);
let decoded = decoder.decode(encoded);