2016-08-10 7 views
1

Webデータを取得するWeb APIを呼び出すAngular(1.x)ベースのアプリケーションがあります。カスタマーオブジェクトのプロパティの1つは、そのイメージです。オブジェクトを受け取ると、画像データはUTF-8でエンコードされます。JSを介してUTF-8イメージ(文字列)をデコードする

ただ、より明確にするために、C#のベースのAPIはこれをやっている:

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

ので画像はUTF-8でエンコードされた文字列に変換されます。クライアント側では

、私は単に

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

にcustomer.imageデータを結合していますこれは私のアプリケーションの他の部分でうまく働いているが、他の画像が最初に符号化されていません。これは一つです。

私はJSでUTF-8エンコードされた文字列をデコードする方法を探していましたが、decodeURIComponent()のいくつかのバリエーションで動作するように見えました。問題の文字列がURIではないので、それは私のためには機能しません。 (私は無効なURIエラーを取得します)。

JS、JQuery、またはAngularを使用してこのデータをデコードするにはどうすればよいですか?単純なはずですが、間違った言葉を使っているだけかもしれません...

答えて

0

UTF-8はデンマーク語のような特殊文字を扱うことのできる文字エンコーディングです: "æøå"。 UTF-8の最初の部分は、ASCIIコード化されたコンテンツ(https://en.wikipedia.org/wiki/UTF-8)との互換性を保証するためのASCII文字です。 Base64エンコーディングは、バイナリデータをASCIIテキスト(https://en.wikipedia.org/wiki/Base64)としてエンコードします。

これは基本的に、Base64データが正しくエンコードされていれば、それがUTFエンコードされているかどうかにかかわらず同一であることを意味します。したがって、短期的には、エンコーディングに問題があってはいけません。

あなたの問題を解決するには、画像データが実際に正しくBase64としてエンコードされているかどうかを調べます。予想されるBase64ではなくバイナリデータをベットしている可能性があります。その場合、Base64エンコードデータ。

参考資料として、使用するテキスト/文字列のすべてがUTF-8でエンコードされていることを確認することをお勧めします。 html、jsなどのファイルがUTF-8であることを確認し、データベースが確実であることを確認して、エンコーディングを示すメタHTMLタグを取得するようにします。すべてをUTF-8にすると、特にあなたが特殊文字に遭遇した場合、あなたの人生はずっと楽になります。

関連する問題