問題タブ [byte-order-mark]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - BOM を使用して UTF-16LE バイト配列をエンコード/デコードするにはどうすればよいですか?
UTF-16 バイト配列を との間でエンコード/デコードする必要がありますjava.lang.String
。バイト配列はByte Order Marker (BOM)で与えられ、BOM でバイト配列をエンコードする必要があります。
また、私は Microsoft クライアント/サーバーを扱っているので、誤解を避けるためにエンコーディングを (LE BOM と共に) リトル エンディアンで出力したいと思います。BOM を使用するとビッグ エンディアンで動作するはずですが、Windows の世界で上流に泳ぎたくはありません。
例として、BOM を使用してリトル エンディアンでjava.lang.String
asをエンコードするメソッドを次に示します。UTF-16
Javaでこれを行う最良の方法は何ですか? 理想的には、最初に 2 つの余分なバイトが割り当てられた新しいバイト配列にバイト配列全体をコピーすることは避けたいと思います。
このような文字列のデコードにも同じことが言えますが、java.lang.String
コンストラクターを使用すると、より簡単になります。
python - Python で UTF-8 ファイルに書き込む
私は本当に混乱していcodecs.open function
ます。私がする時:
それは私にエラーを与える
UnicodeDecodeError: 'ascii' コーデックは位置 0 のバイト 0xef をデコードできません: 序数が範囲外です (128)
私が行った場合:
それは正常に動作します。
質問は、なぜ最初の方法が失敗するのですか? そして、どのようにボムを挿入しますか?
2番目の方法が正しい方法である場合、使用するポイントは何codecs.open(filename, "w", "utf-8")
ですか?
unicode - Unicode署名のバイト順マーク(BOM)を使用するのはなぜですか?
これらは廃止されていますか?これまでで最悪のアイデアのようです。ファイルの内容に、誰にも見えないものを埋め込んでください。ただし、ファイルの機能に影響を与えます。なぜ欲しいのかわかりません。
unicode - awkを使用してバイト順マークを削除する
BOMを削除するためのawk
スクリプト(おそらくワンライナー)はどのようになりますか?
仕様:
NR > 1
最初の( )の後のすべての行を印刷します#FE #FF
最初の行の場合:またはで始まる場合は#FF #FE
、それらを削除して残りを印刷します
.net - .NET で、UTF-16 XMLDocument を BOM 付きの文字列に書き込む方法
xml ドキュメントを使用して、.NET でオンザフライでXmlDocumentを構築しています。次に、それをXslCompiledTransformのTransform()メソッドで変換します。
Transform() メソッドは、エンコーディングに対して無効な文字がストリームで見つかったため、例外をスローしました。Visual Studio の TextVisualizer を使用して文字列をコピーしてAltova XmlSpyに貼り付けると、エンコーディングの問題が見つかりません。
ドキュメントに UTF-16 ヘッダーを追加して UTF-16 としてレンダリングし、結果のテキストから Transform を呼び出して、BOM について不平を言うようにしました。以下は、私が使用したコードの簡略版です。
その結果、次のように文字列に書き込んでいます。
BOM を追加したり、BOM を気にしないように XslCompiledTransform.Transform を取得するにはどうすればよいですか?
java - BOM を使用せずに異なるエンコーディングを識別するにはどうすればよいですか?
utf-16LE でエンコードされたファイルからコンテンツを取得するファイル ウォッチャーがあります。書き込まれたデータの最初のビットには、利用可能な BOM があります。これを使用して、UTF-8 に対するエンコーディングを識別していました (受信するほとんどのファイルがエンコーディングされています)。BOM をキャッチして UTF-8 に再エンコードし、パーサーが異常を起こさないようにします。問題は、ファイルが拡大するため、データのすべてのビットに BOM が含まれているわけではないことです。
これが私の質問です - 私が持っているデータの各セットに BOM バイトを追加せずに (ソースを制御できないため)、UTF-16 \000 に固有の null バイトを探してから使用できますか? BOMの代わりに私の識別子としてそれを?これにより、今後頭痛がすることはありますか?
私のアーキテクチャには、Java で記述されたパーサーが取得したときに受信したデータを一時ファイルに記録する ruby Web アプリケーションが含まれます。
私の識別/再エンコードコードは次のようになります。
アップデート
ユーロ、em ダッシュ、およびその他の文字などをサポートしたいと考えています。上記のコードを次のように変更したところ、これらの文字のすべてのテストに合格したようです。
皆さんはどう思いますか?
asp.net - HttpResponse.TransmitFile()によるASP.NET応答の途中の文字(UTF-8 BOM)
私はこの投稿を見ました:各ファイルの先頭に追加された文字。
その場合、作成者は手動でソースファイルを読み取り、内容を書き込んでいました。私の場合、HttpRequestを介して抽象化しています。TransmitFile():
.jsファイルは実際にUTF-8でエンコードされています。これは、最初のファイル以外の各ファイルの先頭にBOMが正しく表示されないことを意味します。
TransmitFile()の良いところは、(a)読み取りと書き込みのプロセス全体を抽象化し、(b)最初にファイルをメモリに読み込まないように最適化されていることです。これは、ファイルが大きい場合やファイルが大きい場合に非常に重要です。多くの同時リクエストがあります。ただし、逆に、BOMがないとUTF-8に再エンコードできません。(これはリークのある抽象化の例だと思います。)
この問題を解決するためのエレガントな方法はありますか?ありがとう!
xml - DjangoからのXML応答にBOMを追加する
Djangoを使用render_to_response
してXMLドキュメントを返します。この特定のXMLドキュメントは、フラッシュベースのチャートライブラリを対象としています。ライブラリでは、XMLドキュメントがBOM(バイト順マーカー)で始まる必要があります。DjangoにBOMを応答にプリペントさせるにはどうすればよいですか?
BOMをテンプレートに挿入することはできますが、ファイルを編集するたびにEmacsがBOMを削除するため、不便です。
次のように書き直そうとしましrender_to_response
たが、BOMがUTF-8でエンコードされているため、失敗します。
asp.net - ASP.NET: Server.Execute() の BOM
これを使用して、応答ストリームに書き込みます。
しかし、応答でバイト オーダー マークを取得しています。エンコーディングを台無しにしていますか?BOM を返却しない方法を教えてください。
編集: 申し訳ありませんルーベンス、私の最初の例は間違っていました。
c# - C#を使用してXmlTextWriterからBOMを削除するにはどうすればよいですか?
作成中のXMLファイルからBOMを削除するにはどうすればよいですか?
新しいUTF8Encoding(false)メソッドを使用しようとしましたが、機能しません。これが私が持っているコードです: