問題タブ [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.
c++ - コンソールからのユーザー入力を Unicode 文字列に読み込む方法は?
C++ 初心者の質問です。これが私が現在持っているものです:
Çanemeplaîtpas.xml
これは米国では「動作」しますが、フランスのユーザーがこのアプリを実行していて、コマンド ラインなどで奇妙な文字を入力し始めた場合にどうなるかはわかりません。タイプの文字列を設定するクリーンな方法を探していますCAtlString
。入力の最大長は常に十分に長く設定できますが、理想的には、ユニコードと非ユニコードのエントリを同じ文字数に制限したいと考えています。うまくいけば、そうすることはかなり簡単でエレガントです。
c++ - utfcppおよびWin32ワイドAPI
小さなutfcppライブラリを使用して、ワイドWindows API(FindFirstFileWなど)から取得したすべてのものをutf16to8を使用して有効なUTF8表現に変換するのは良い/安全/可能ですか?
内部でUTF8を使用したいのですが、正しい出力を取得できません(別の変換後のwcoutまたはプレーンcoutを介して)。もちろん通常のASCII文字は機能しますが、ñäはめちゃくちゃになります。
または、より簡単な代替手段はありますか?
ありがとう!
更新:Hans(下記)のおかげで、WindowsAPIを介してUTF8<->UTF16を簡単に変換できるようになりました。双方向変換は機能しますが、UTF16文字列からのUTF8には余分な文字がいくつかあり、後で問題が発生する可能性があります...)。純粋な親しみやすさからここで共有します:)):
php - UTF-16で出力?少し立ち往生
サロゲート ペア形式の UTF-16 でエンコードされた文字がいくつかあります。これらのサロゲート ペアを文字として画面に出力したいと考えています。
これがどのように可能か知っている人はいますか?
php - PHP を使用して UTF-16/CJK 文字をクリーンアップしますか?
コンピューターに UTF-16 のファイルがいくつかありますが、これは意図ではなくファイルのエラーまたは破損が原因のようです。ファイルは平易な英語であるはずです。これらの 1 つをアップロードしました (ここ)。Firefox のエンコーディング ([表示] > [文字エンコーディング]) を UTF-8 のままにしておくと、大量の意味不明なメッセージが表示されます (スクリーンショットを参照)。エンコーディングを UTF-16 に変更すると、見栄えが大幅に向上します (スクリーンショット2 を参照)。ただし、CJK 文字がまだ多数存在します。
これらすべてのファイルを調べてクリーンアップし、おそらく utf-8 形式で保存したいと思います (utf8_general_ci 照合を使用する mysql テーブルに内容を挿入します)。PHPを使用して自動化された方法でこれを行う方法を知っている人はいますか? ファイルを UTF-8 で表示しようとすると、ファイルに表示されるファンキーな文字をすべて削除し、UTF-16 で表示すると表示されるすべての CJK 文字を削除したいと思います。
hash - UTF16 のファイル パスの適切な 64 ビット ハッシュを探しています
Unicode / UTF-16 でエンコードされたパスがあります。パス区切り文字は U+005C '\' です。パスは、null で終わるルート相対 Windows ファイル システム パスです (例: "\windows\system32\drivers\myDriver32.sys")。
このパスを64 ビットの符号なし整数にハッシュしたいと考えています。「暗号的に健全」である必要はありません。ハッシュは大文字と小文字を区別しない必要がありますが、ASCII 以外の文字を処理できます。明らかに、ハッシュも適切に分散する必要があります。
私が持っていたいくつかのアイデアがあります:
A) Windows ファイル識別子を「ハッシュ」として使用する。私の場合、ファイルが移動された場合にハッシュを変更したいので、これはオプションではありません。
B) 通常の文字列ハッシュを使用するだけです: ハッシュ += プライム * ハッシュ + 文字列全体のコードポイント。
パスが「セグメント」(フォルダー名と最終的なファイル名) で構成されているという事実を活用できると感じています。
ニーズをまとめると、次のようになります。
1) 64 ビット ハッシュ
2) 適切な分散/ファイル システム パスの競合が少ない。
3) 効率的
4) 安全である必要がない
5) 大文字と小文字 を区別しない
.net - ASP .NET エンコーディングの問題がある SQL Server 2005
エンコーディングの問題についてもう一度書いています...コードサンプルをいくつか示します。
簡単に言うと、データベース入力データに保存するとき、ポーランド語の「ń」などの一部の言語固有の文字は保存されず、挿入された「n」が保存されます。一方、string: Adams æbler は æ で保存しています。
これは、データを保存してデータを表示するコードから始まるコードです。
Default.aspx にはメタ タグがあります。
表は次のようになります。
問題を解決するために他に何が必要かわかりません。助けていただければ幸いです。
ありがとう、パヴェウ
c# - 可能な「最も低い」エンコーディングを決定する方法は?
シナリオ
スペースが問題にならないデータベースまたはサーバーに、UTF-16 として保存されている XML ファイルが多数あります。XML ファイルとして他のシステムに取得する必要があるこれらのファイルの大部分を取得する必要があり、できるだけ少ないスペースを使用することが重要です。
問題
実際には、UTF-16 として保存されるファイルのうち、UTF-16 として保存する必要があるのは約 10% のみであり、残りは UTF-8 として安全に保存でき、問題ありません。UTF-16 にする必要があるものだけを UTF-8 にして、残りを UTF-8 にすることができれば、ファイル システムで使用するスペースを約 40% 減らすことができます。
データの優れた圧縮を使用しようとしましたが、これは便利ですが、UTF-16 で得られるのと同じ圧縮率が UTF-8 で得られ、UTF-8 圧縮も高速であることがわかりました。したがって、最終的にできるだけ多くのデータを UTF-8 として保存すると、非圧縮で保存するときにスペースを節約できるだけでなく、圧縮してもさらにスペースを節約でき、圧縮自体で時間を節約することさえできます。 .
ゴール
XML ファイルに UTF-16 を必要とする Unicode 文字が含まれている場合を把握し、必要な場合にのみ UTF-16 を使用できるようにします。
XML ファイルとデータに関する詳細
XML 自体のスキーマは制御しますが、ソースは使用する Unicode データを自由に提供できるため、Unicode の観点から値に入れることができる「文字列」のタイプは制御しません。ただし、これはまれであるため、10% の頻度でしか必要とされないものをサポートするために、毎回 UTF-16 を使用する必要はありません。
開発環境
.Net Framework 4.0 で C# を使用しています。
編集:解決策
解決策は、UTF-8 を使用することです。
この質問は、私の UTF の誤解に基づいていました。ありがとうございました!
javascript - BMP 外の JavaScript 文字列
BMP はBasic Multilingual Plane です
JavaScriptによると: 良い部分:
JavaScript は、Unicode が 16 ビットの文字セットであったときに構築されたため、JavaScript のすべての文字は 16 ビット幅です。
このことから、JavaScript は (UTF-16 ではなく) UCS-2 を使用し、U+FFFF までの文字しか処理できないと思われます。
さらに調査すると、次のことが確認されます。
このfromCharCode
メソッドは、Unicode 文字を返すときに下位 16 ビットのみを使用しているようです。U+20001 (CJK 統一表意文字 20001) を取得しようとすると、代わりに U+0001 が返されます。
質問: JavaScript でポスト BMP 文字を処理することはまったく可能ですか?
2011-07-31: Unicode Support Shootout のスライド 12: The Good, The Bad, & the (mostly) Uglyは、これに関連する問題を非常によくカバーしています:
unicode - バイナリファイルとUTF16のgrep
標準grep
/pcregrep
などは、ASCIIまたはUTF8データのバイナリファイルで便利に使用できます-UTF16も試す簡単な方法はありますか(できれば同時に、代わりに行います)?
とにかく、取得しようとしているデータはすべてASCIIです(ライブラリ内の参照など)。2つの文字の間に00がある場合とない場合があるため、見つかりません。
意味的にそれを行う方法はわかりませんが、コマンドラインで簡単に使用できないことを除けば、これらの 00 でうまくいくはずです。