通过JS解码UTF-8图像(字符串)

Decoding a UTF-8 image (string) via JS

本文关键字:字符串 图像 UTF-8 JS 解码 通过      更新时间:2023-09-26

我有一个基于Angular (1.x)的应用程序,它调用Web API来获取客户数据。客户对象的属性之一是他们的图像。当我接收到对象时,图像数据是UTF-8编码的。

为了更清楚,基于c#的API是这样做的:

customer.image = Encoding.UTF8.GetString(Image);

所以图像被转换成UTF-8编码的字符串。

在客户端,我只是绑定客户。图像数据到

 <img ng-src="data:image/JPEG;base64,{{customer.image}}" ... >

这在我的应用程序的其他部分工作得很好,但其他图像没有被首先编码。

我一直在寻找和寻找一种方法来解码在JS中的UTF-8编码字符串,但我遇到的每一个答案似乎在decodeURIComponent()的一些变化上工作。这对我来说不工作,因为所讨论的字符串不是URI。(我得到一个无效的URI错误)。

我如何使用JS, JQuery或Angular解码这些数据?看起来应该很简单,但也许我只是使用了错误的术语…

UTF-8只是一种字符编码,可以处理特殊字符,如丹麦字符:"æø "。UTF-8的第一部分是ASCII字符,以确保与ASCII编码内容的兼容性(https://en.wikipedia.org/wiki/UTF-8)。Base64编码是二进制数据作为ASCII文本的一种编码(https://en.wikipedia.org/wiki/Base64)。

这基本上意味着如果你的Base64数据被正确编码,那么无论它是否是utf编码,它都是相同的。因此,从短期来看,您的问题不应该在于编码。

所以要解决你的问题,我会看看如果图像数据实际上是正确编码为Base64,最有可能的是你押注二进制数据,而不是预期的Base64,在这种情况下,你想要的是Base64编码的数据。

作为旁注,建议确保使用的所有文本/字符串都是UTF-8编码的。确保你的html, js等文件是UTF-8,确保数据库是,并确保你得到的元html标签告诉编码那里。将所有内容设置为UTF-8将使您的工作更轻松,特别是在遇到特殊字符时。