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

时间:2016-08-10 18:44:38

标签: javascript angularjs image utf-8 decode

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

为了更清楚,基于C#的API正在这样做:

 protected void Application_Start()
 {
     ...
     FluentValidationModelValidatorProvider.Configure();
 }

因此图像被转换为​​UTF-8编码的字符串。

在客户端,我只是将customer.image数据绑定到

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

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

我一直在搜索和搜索在JS中解码UTF-8编码字符串的方法,但我遇到的每个答案似乎都在解决decodeURIComponent()的某些变体。那对我不起作用,因为有问题的字符串不是URI。 (我收到了无效的URI错误)。

如何使用JS,JQuery或Angular解码此数据?似乎它应该很简单,但也许我只是使用了错误的术语......

1 个答案:

答案 0 :(得分:0)

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,确保数据库是并确保您获得meta html标记,告诉编码。拥有UTF-8的所有内容将使您的生活更轻松,特别是如果您遇到特殊字符。