1. ホーム
  2. javascript

文字列/ブロブへのUTF-8 BOMの付加

2023-09-30 11:40:50

質問

クライアント側で生成したテキストデータにUTF-8のバイトオーダーマークを付加する必要があります。どのようにすればよいのでしょうか。

使用方法 new Blob(['\xEF\xBB\xBF' + content])'"my data"' となります。

どちらも '\uBBEF\x22BF' は動作します。 '\x22' == '"' の次の文字である。 content ).

生成されたテキストにJavaScriptでUTF-8 BOMを前置することは可能でしょうか?

はい、私はこの場合、本当にUTF-8 BOMが必要です。

どのように解決するのですか?

プリペイド \ufeff を文字列に付加します。参照 http://msdn.microsoft.com/en-us/library/ie/2yfce773(v=vs.94).aspx

の間の議論を参照してください。 ジェフ・フィッシャー ケーシー は、UTF-8 と UTF-16 についての詳細です。 とBOMがあります。実際に上記が動作するのは、文字列 \ufeff が、UTF-8やUTF-16が使われているかに関わらず、常にBOMを表すために使われていることです。

のp.36を参照してください。 ユニコード標準5.0、第2章 の 36 ページを参照してください。そのページからの引用

表 2-4 の UTF-8 のエンディアン順序の項目が N/A とされているのは、次の理由によります。 UTF-8のコードユニットは8ビットであり、より大きなコードユニットに対するエンディアンの順序に関する通常の機械の問題は適用されないためです。 エンディアンの順序は適用されません。バイトの直列化された順序は バイトの直列化された順序は、UTF-8 の符号化形式によって定義された順序から外れてはならない。 の符号化形式によって定義された順序から外れてはならない。BOM の使用は、UTF-8 では必須でも推奨でもありません。 BOMの使用はUTF-8では必須でも推奨でもありませんが、UTF-8データを他のエンコード形式から変換する際に遭遇する可能性があります。 BOMの使用は、UTF-8では必須でも推奨でもありませんが、BOMを使用する他のエンコーディング形式からUTF-8データが変換される場合や、BOMがUTF-8の署名として使用される場合 が UTF-8 の署名として使用される場合に遭遇する可能性があります。