在Python 3中,要将字符串转换为字节序列,可以使用a
,其中String.encode(ENCODING)
是要使用的编码的名称。如果我的字符串中有一个代码点大于255的字符,那么它仍将被转换为字节数组。如果需要对字符串进行操作(例如密码演示),这将非常有用。可以使用ENCODING
重新构建文本。
我还没有看到任何与JavaScript相似的内容。有ByteArray.decode(ENCODING)
,但这会将String.charCodeAt()
之类的字符转换为Ā
。那不是我想要的。
答案 0 :(得分:1)
您可以使用TextEncoder()
.encode()
和TextDecoder()
.decode()
方法
let decoder = new TextDecoder(/* character encoding */);
let encoder = new TextEncoder();
let encoded = encoder.encode(str);
let decoded = decoder.decode(encoded);
答案 1 :(得分:0)
您可以使用标准FileReader
直接读取字节:
var str = "Āabc";
var b = new Blob([str], {type:"text/plain"});
var f = new FileReader();
f.addEventListener("loadend", function(){
console.log(new Uint8Array(f.result)); // [196, 128, 97, 98, 99]
});
f.readAsArrayBuffer(b);
答案 2 :(得分:0)
“对字符串进行操作......密码”:可能不是。
密码是字节数组的数学转换。加密的结果不是文本,因此不能直接存储在字符串中。
JavaScript字符串是UTF-16代码单元的计数序列。 (也适用于VB4 / 5/6,VB,VBA,VBScript,C#,Java ......)UTF-16是Unicode字符集的几种编码之一。 UTF-8是另一个。既不对任意二进制数据进行编码/解码。
您提到了String.charCodeAt()
。这只是给你一个字符串中的UTF-16代码单元。
在字符串中携带和显示二进制数据的常用方法是Base64和十六进制。这种方式有点重 - 发送者和接收者必须同意字符串的字符编码和二进制到文本转换 - 但许多系统宁愿传递文本而不是二进制。