在javascript中将字符串编码为utf-16到base64

时间:2013-05-19 09:16:34

标签: javascript encoding base64 utf-16

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

我需要从输入中获取值:

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

并将其编码为base64,将文本视为utf-16,所以:

this is a test

变为:

dABoAGkAcwAgAGkAcwAgAGEAIAB0AGUAcwB0AA==

而不是以下,你将其视为UTF-8:

dGhpcyBpcyBhIHRlc3Q=

1 个答案:

答案 0 :(得分:1)

您的数据,一旦读成JavaScript,将是一个encodingless数字格式(严格来说,它必须是Unicode标准形C,而Unicode是仅仅是一系列用于为在Unicode的词汇每一个字形的数字。这是编码以下)。所以:如果您特别需要编码为UTF-16字节序列的数据,请执行此操作,然后对其进行base64编码。

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

你真正需要的是从HTML元素中获取文本值,Base64对其值进行编码,然后将接收的数据解压缩为UTF8;不要试图让JavaScript做更多的工作。我认为你将这些数据发送到服务器或其他东西,在这种情况下:你的服务器语言比JavaScript更复杂,并且可以通过内置函数解压缩大约一百万种不同编码的文本。所以就这样使用它。 Don't solve Y for X