我有一个基于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解码此数据?似乎它应该很简单,但也许我只是使用了错误的术语......
答案 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的所有内容将使您的生活更轻松,特别是如果您遇到特殊字符。