問題タブ [utf-16]
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.
.net - バイナリ データを UTF-16 文字列にパックするための標準的な手法はありますか?
(.NET の場合) byte[] (画像など)に任意のバイナリ データを格納しています。次に、そのデータを文字列(レガシー API の「コメント」フィールド)に格納する必要があります。このバイナリデータを文字列にパックするための標準的な手法はありますか? 「パッキング」とは、適度に大きくランダムなデータセットの場合、bytes.Length/2がpacked.Lengthとほぼ同じであることを意味します。2 バイトは多かれ少なかれ 1 文字であるためです。
2 つの「明白な」回答は、すべての基準を満たしていません。
利用可能な約60,000文字のうち64文字しか使用しないため、文字列を非常に効率的に使用することはできません(私のストレージはSystem.Stringです)。一緒に行く
stringをより有効に活用できますが、無効な Unicode 文字 (サロゲート ペアの不一致など) を含むデータでは機能しません。 この MSDN の記事では、この正確な (貧弱な) 手法が示されています。
簡単な例を見てみましょう。
この場合、元のバイトが UTF-16 文字列だったため、 bytesとutf16_bytesは同じです。これと同じ手順を base64 エンコーディングで実行すると、16 メンバーのbase64_bytes配列が得られます。
ここで、無効な UTF-16 データを使用して手順を繰り返します。
utf16_bytesが元のデータと一致しないことがわかります。
無効な Unicode 文字の前のエスケープとして U+FFFD を使用するコードを作成しました。それは機能しますが、自分で作ったものよりも標準的なテクニックがあるかどうか知りたい. 言うまでもなく、無効な文字を検出する方法としてDecoderFallbackExceptionをキャッチするのは好きではありません。
これを「ベース BMP」または「ベース UTF-16」エンコーディング (Unicode Basic Multilingual Plane のすべての文字を使用) と呼ぶことができると思います。はい、理想的には、Shawn Steele のアドバイスに従い、 byte[]を渡します。
Peter Housel の提案を「正しい」答えとして使用します。「標準的な手法」の提案に近づいたのは彼だけだからです。
unicode - ビッグエンディアンとリトルエンディアンのバイト順序の違い
ビッグエンディアンとリトルエンディアンのバイト順序の違いは何ですか?
これらは両方ともUnicodeとUTF16に関連しているようです。これはどこで正確に使用しますか?
sql-server - SQL Server Management Studio - グリッド結果を .CSV として保存 - UTF-16 (Unicode) の代わりにテキストを出力する方法
SQL Server Management Studio で、グリッドの [名前を付けて保存] を変更して、UTF-16 ではなくテキストのエンコーディングを書き出すことはできますか?
SQL Server Management Studio で結果グリッドを右クリックすると、.CSV として保存できます。現在、UTF-16 (Unicode) としてエンコードされた .CSV ファイルを保存しますが、Excel はこの形式を自動的に開きません (Excel は区切り文字を要求します)。プロンプトを回避するために、ファイルを SlickEdit で開き、「テキスト」として保存しました。もちろん、これは余分な手順です。
xml - PowerShell を使用して xml を UTF-16 から UTF-8 に変換する
XML を UTF16 から UTF8 でエンコードされたファイルに変換する最も簡単な方法は何ですか?
git - gitにUTF-16ファイルをテキストとして認識させることはできますか?
gitでVirtualPC仮想マシンファイル(* .vmc)を追跡していますが、変更を加えた後、gitはファイルをバイナリとして識別し、差分を取得しませんでした。ファイルがUTF-16でエンコードされていることを発見しました。
このファイルがテキストであることを認識し、適切に処理するようにgitに教えることはできますか?
私はCygwinでgitを使用しており、core.autocrlfをfalseに設定しています。必要に応じて、UNIXでmSysGitまたはgitを使用できます。
unicode - Windows で U+FFFF を超える Unicode 文字を表示する
私が EVC++ 4 で開発しているアプリケーションは Windows CE 5 で動作し、ユニコードをサポートする必要があります (AFAIK wchar_t は Windows で UTF-16 を使用するため、それを使用しています)。文字。特に、2 バイトだけでなく UTF-16 で 4 バイトを使用する文字の場合。したがって、そのような文字をテキストエディター (組み込みデバイスではなく、Windows XP を搭載したデスクトップ PC の atm) で表示しようとしています。
しかし、私はまだそうすることができていません。例として、このキャラクターを選択しました。ここで述べたように、 「MPH 2B ダマーゼ」はこのキャラクターをサポートする必要があります。そこで、フォントをダウンロードして Windows\Fonts に入れました。次の内容のhexeditorを使用して(念のため)テキストファイルを作成しました。
メモ帳 (Unicode 対応である必要がありますよね?) で開いて、ダウンロードしたフォントを使用すると、意図したとおりに 1 文字が表示されませんが、この 2:
私は何を間違っていますか?:)
ありがとう!
フルニエル
編集: 提案されているように、BOM を反転しても機能しません。この場合、メモ帳 (および私が試した他のすべてのエディター) には 2 つの四角形が表示されます。興味深いのは、ここで 2 つの正方形を (firefox で) コピーすると、正しい文字が表示されることです。
Komodo Edit でも試してみましたが、同じ結果でした。UTF-8 を使用しても、メモ帳には役立ちません。
python - Python 2/3 を使用して ANSI および UTF-16LE ファイルを解析するための最良の方法は?
ANSI または UTF-16LE でエンコードされたファイルのコレクションがあります。Python が正しいエンコーディングを使用してファイルを開くようにしたいと思います。問題は、ANSI ファイルが UTF-16le を使用してエンコードされた場合、またはその逆の場合に、いかなる種類の例外も発生しないことです。
正しいファイル エンコーディングを使用してファイルを開く簡単な方法はありますか?