問題タブ [surrogate-pairs]
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.
javascript - JavaScript 文字列内のすべての ISO 15924 スクリプト コードを特定する
JavaScript 文字列を取得し、その文字列で発生するすべてのスクリプトを返す効率的な方法を探しています。
サロゲート ペアを必要とする「アストラル」プレーン/非 BMP 文字を含む完全な UTF-16 を正しく処理する必要があります。JavaScript は UTF-16 に対応していないため、これがおそらく主な問題です。
コードポイントのみを処理する必要があるため、複雑なスクリプトや書記素クラスターを意識する必要はありません。(とにかく、これは一部の人には明らかです。)
例:
次のようなものを返します:
私は node.js とXRegExpやunormなどのいくつかの Unicode ライブラリを既に使用しているので、そのような機能を既に処理または緩和している他のライブラリを追加してもかまいません。
スクリプト コードなどの文字プロパティを検索できる JavaScript ライブラリを私は知らないので、これはおそらく問題の 2 番目の部分です。
問題の 3 番目の部分は、非効率性を回避することです。
android - Androidリソースでユニコードを使用するには?
リソース ファイルでこのUnicode 文字を使用したいと考えています。
しかし、私が何をしても、dalvikvm クラッシュで終了します (Android 2.3 および 4.2.2 でテスト済み):
リソースファイルでこれらのバージョンを試しました:
コード内の Java String で使用すると問題なく動作することに注意してください。
python - python2でsurrogateescapeを行う方法
Python3 は Unicode の動作を変更して、サロゲート ペアを拒否しましたが、python2 は拒否しませんでした。
ここで質問があります
しかし、python2 でサロゲート ペアを削除する方法やサロゲート エスケープを行う方法についての解決策は提供されません。
Python3 の例:
ここの「\xed\xa0\xbd」は適切な utf-8 文字ではありません。そして、私はそれらを無視するか、それらを回避したい.
Python2で同じことをすることは可能ですか?
javascript - JavaScript文字列をコードポイントの配列に分割しますか? (「サロゲート ペア」は考慮されますが、「書記素クラスター」は考慮されません)
JavaScript 文字列を「文字」に分割することは簡単にできますが、Unicode を気にする場合 (そして Unicode を気にする必要がある場合) には問題があります。
JavaScript はネイティブに文字を 16 ビット エンティティ ( UCS-2 または UTF-16 ) として扱いますが、これはBMP (Basic Multilingual Plane)以外の Unicode 文字を許可しません。
BMP を超える Unicode 文字を処理するために、JavaScript は「サロゲート ペア」を考慮に入れる必要がありますが、これはネイティブには行われません。
コードポイントが1つまたは2つのJavaScript「文字」(コード単位)を必要とするかどうかにかかわらず、コードポイントでjs文字列を分割する方法を探しています。
必要に応じて、コードポイントによる分割では不十分な場合があり、"書記素クラスター" で分割することをお勧めします。ここで、クラスターはベース コードポイントであり、その後にすべての非間隔修飾子コードポイントが続きます (アクセントと発音記号の組み合わせなど) 。
この質問の目的のために、書記素クラスターによる分割は必要ありません。
c# - サロゲート ペアを含む文字列を逆にする方法
文字列を逆にするこのメソッドを作成しました
ここで、このコードをより効率的にする方法や、代わりに使用できるライナーが 1 つある方法についての議論を開始したくありません。このコードを潜在的に改善するために、Xor やその他のあらゆる種類のことを実行できることを認識しています。後でコードをリファクタリングしたい場合は、単体テストがあるので簡単に行うことができます。
現在、これは BML 文字列 ( のようなアクセント付きの文字"Les Misérables"
列を含む) と、 のような結合文字を含む文字列を正しく反転し"Les Mise\u0301rables"
ます。
サロゲートペアを含む私のテストは、次のように表現されている場合に機能します
しかし、サロゲートペアをこのように表現すると
その後、テストは失敗します。サロゲートペアもサポートする気密実装はありますか?
私が上記の間違いを犯した場合、私は Unicode の専門家ではないので、これを指摘してください。
unicode - 複合文字とサロゲート ペアの違い
Unicode では、複合文字とサロゲート ペアの違いは何ですか?
私には、それらは似たようなもののように聞こえます - 2 つの文字が 1 つの文字を表します。これら 2 つの概念の違いは何ですか?
winapi - テキストにサロゲートがある場合のリッチエディットでのカーソル位置の取得
Windows では、サロゲートを含む UTF-16 シーケンスがあり、そのシーケンスをリッチエディット コントロールに挿入すると、リッチエディット コントロールはこれを適切に処理し、サロゲート ペアごとに 1 文字のみを表示します。
私が直面している問題は、選択範囲を照会すると、コントロール内の表示可能な文字数としての文字位置ではなく、UTF-16 ストリーム内の位置を取得していることです。実際の位置を見つけるには遅い解決策がありますが、UTF-16 で選択されたテキストまで取得してから、実際の文字数をカウントする必要があります。
私は何か見落としてますか?それよりも効率的なものはありますか?
ありがとう、
マヌー
PS: 選択をクエリするには、EM_EXGETSEL メッセージを使用して CHARRANGE 構造体を埋めます。
java - Weka: J48 ディシジョン ツリーでサロゲート スプリットを実装するにはどうすればよいですか?
JavaでWeka APIを使用して、J48アルゴリズムで代替の欠損値処理を実装するのを手伝ってくれる人はいますか?
J48 をトレーニングする前に事前代入アプローチを使用するのは簡単だと確信しています。
しかし、既知の値を持つ観察されたケースから確率分布全体にケースを分割する J48 標準アプローチ (C4.5 の Quinlan) の代わりに、トレーニング日付 (CART で Breiman が行うように) を分割する場合に代理分割属性を使用することについてはどうでしょうか。
標準をサロゲート分割に置き換えるために、Weka API とソース コードのどこを変更する必要があるか、情報、ヒント、ヘルプを教えてもらえますか?
unicode - サロゲート ペアは、UTF-16 で 2 バイトより大きいコード ポイントを表す唯一の方法ですか?
これはおそらくばかげた質問であることはわかっていますが、この問題について確信を持つ必要があります。たとえば、プログラミング言語がその String 型が UTF-16 エンコーディングを使用すると言っている場合、それは次のことを意味するかどうかを知る必要があります。
- U+0000 から U+FFFF の範囲のコード ポイントに 2 バイトを使用します。
- U+FFFF (コード ポイントあたり 4 バイト) より大きいコード ポイントにはサロゲート ペアを使用します。
または、一部のプログラミング言語は、エンコード時に独自の「トリック」を使用し、この標準に 100% 準拠していません。