2

我正在努力在网上找到任何有关此的资源,这令人担忧。我一直在阅读有关 UCS-2 和 UTF-16 的问题,但找不到解决方案。

我需要从输入中获取一个值:

var val = $('input').val()

并将其编码为base64,将文本视为utf-16,因此:

this is a test

变成:

dABoAGkAcwAgAGkAcwAgAGEAIAB0AGUAcwB0AA==

而不是下面的,您将其视为 UTF-8:

dGhpcyBpcyBhIHRlc3Q=
4

1 回答 1

1

您的数据一旦读入 JavaScript,将采用无编码数字格式(严格来说,它必须采用 Unicode 规范化形式 C,但 Unicode 只是 Unicode 词典中每个字形的一系列标识数字。它是无编码的)。所以:如果您特别需要编码为 UTF-16 字节序列的数据,请执行此操作,然后进行 base64 编码。

但有趣的是:您需要哪种 UTF-16?小端还是大端?有或没有 BOM?UTF-16 是一种非常不方便的编码格式(我们甚至不会接触 UCS-2。它已经过时了。已经很久了)。

您真正需要的是从您的 HTML 元素中获取一个文本值,Base64 对其值进行编码,然后将接收到该数据的任何内容解压缩为 UTF8;不要试图让 JavaScript 做更多的工作。我假设您正在将这些数据发送到服务器或其他东西,在这种情况下:您的服务器语言比 JavaScript 更复杂,并且由于内置函数可以将文本解压缩成大约一百万种不同的编码。所以就用那个。不要为 X 解决 Y

于 2013-05-19T14:45:08.943 回答