問題タブ [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.
utf-8 - 「サロゲート ペア」の概念はデータベースでどのように機能しますか?
私の質問はデータベース (特に SQL Server) に関するものです。公式ガイドでは、「NVARCHAR/NCHAR」を使用する場合、「1 文字あたり 2 バイトのストレージ」が使用され、「サロゲート ペアが必要な場合は、文字には 4 バイトのストレージが必要です。」サロゲート ペアが必要な場合、4 バイトはどのように使用されますか? その「必要性」はどのように SQL Server に伝達され、どのように認識されるのでしょうか? これがどのように機能するかはわかりません-プログラミングをしていたとき、何かをUTF-8、16、または32として定義していました.SQL ServerはUTF-16のみを受け入れるようで、どういうわけか使用します必要に応じてサロゲートペア。誰かが私にこれがどのように機能するのか説明してもらえますか? また、ソースと参考文献を本当に感謝しています。
サロゲートペアについて読んでみましたが、表面に触れて「サロゲートペアは2つのUTF-16を使用してUTF-32文字を表現するためのメカニズムにすぎない」と説明するいくつかのソースを除いて、文字通り何もありません。
ありがとうございました。長い質問で申し訳ありません。
.net - サロゲート ペアの検出に失敗する
私は、既存の C# コードを F# に移植することを含む F# のマイナーなサイド プロジェクトに取り組んでおり、2 つの言語間で正規表現がどのように処理されるかの違いに出くわしたようです (うまくいけば、私が間違ったことをしているだけです)。
このマイナーな機能は、ここで概説されている正規表現のトリックを使用してサロゲート ペアを検出するだけです。現在の実装は次のとおりです。
次に、次のような既知のサロゲートペアに対して実行すると:
false
FSI ウィンドウに入ります。
同等の C# を使用する場合:
そして、同じ入力値、私は(正しく)true
戻ってきます。
これは本当の問題ですか?F# の実装で何か間違ったことをしているだけですか?
c# - C#:文字列の最初の文字を取得するには?
stringの最初の 16 ビットを取得する方法については、char
既に質問があります。
これには、質問コードが含まれます。
受け入れられた回答コード:
それにはいくつかの用途があると思いますが、文字列にテキストが含まれている場合、実際には「コードポイント」を意味する制限された意味であっても、単一の 16 ビット char では文字を保持できないことをすべて認識していることを願っています。
私はプログラマーですが、C# プログラマーではありません。これが基本的な質問だと思われる場合に備えて、オンラインの同僚がそのようなバグを修正するのを手伝おうとしています.
したがってchar
、正しい UTF-16 でエンコードされた配列内の C# の文字列があり、最初の文字/コードポイントとしてサロゲート ペアが含まれている可能性があり、したがって 2 つの で構成される可能性がある場合、最初の文字char
を取得するにはどうすればよいでしょうか?
(私は単純に、Microsoft がこのための文字列関数を提供しており、サロゲート ペアを手動でチェックする必要はないと思い込んでいます。)
python - Pythonはsurrogateescapeでエンコードできません
Python (3.4) での Unicode サロゲート エンコーディングに問題があります。
Pythonのドキュメントによると、私が間違っていなければ:
'surrogateescape': デコード時に、バイトを U+DC80 から U+DCFF の範囲の個々のサロゲート コードに置き換えます。このコードは、データのエンコード時に「surrogateescape」エラー ハンドラが使用されると、同じバイトに戻されます。
コードはソース シーケンス ( b'\xCC'
) を生成するだけです。では、代わりに例外が発生するのはなぜですか?
これはおそらく私の2番目の質問に関連しています:
バージョン 3.4 で変更: utf-16* および utf-32* エンコーダーは、サロゲート コード ポイント (U+D800–U+DFFF) のエンコードを許可しなくなりました。
( https://docs.python.org/3/library/codecs.html#standard-encodingsより)
私の知る限り、いくつかのコード ポイントをサロゲート ペアなしで UTF-16 にエンコードすることは不可能です。では、この背後にある理由は何ですか?
regex - Python 3 文字列の不正なサロゲートのチェック
具体的には、Python 3.3 以降では、単純な一致を使用して孤立したサロゲートをチェックするだけで十分ですか?
すべての合法的なサロゲートはアストラル コード ポイントとして表され、したがって一致しないという仮定に基づいて、違法なサロゲートを除外しますか、それとも注意が必要な警告やエッジ ケースはありますか?
c# - Unity3d サロゲート ペアの絵文字が表示されない
Unity プロジェクトで作業しており、チャット モジュールを追加しています。感情が表に出ないので困っています。Unity の .Net フレームワークを microsoft .net Framework を使用するように変更し、microsoft .net デスクトップ アプリケーション内の問題を解決するコードを使用しました。
上記のコードはそれを解決し、にこやかな顔を見ることができます。しかし、unity3d で使用すると、そのような出力が得られました (サロゲートを高サロゲートと低サロゲートの 2 つの部分に分けました)。
この問題の解決策、または少なくとも回避策はありますか。
ありがとう。
javascript - Javascript を使用した絵文字サロゲート文字列。解析方法は?
javascriptで絵文字を表現したい。私は次のようなファイルを持っています...
キーと絵文字サロゲートが値として含まれています。これを読んで、入力文字列がキーと一致する場合、単語をそれらの絵文字に置き換えます。
つまり、「^^」と入力すると、スマイル マークに置き換えられます。
しかし、奇妙なことがあります。これらの情報をオブジェクトとして配置すると、絵文字がうまく印刷されます。
お気に入り...
交換部品は次のようになります...
しかし、ファイルから情報を読み取ると、「\ud83d\ude22」のような文字列が出力されます。
js でサロゲート文字列を表現するにはどうすればよいですか? (サードパーティのライブラリは使いたくないのですが)
参考までに、js ファイルとターゲット ファイルは両方とも UTF-8 でエンコードされています。
======== ファイル読み込み部分
=========== 編集済み
ヒントが見つかりました。
ファイルから読み取る\u
と\\u
、に変わりますが、テキストから読み取ると、それが何であるかを維持します。
すなわち
- ファイルのバージョン:
\ud83d\ude03
に\\ud83d\\ude03
- スクリプトバージョン:
\ud83d\ude03
自身
に変わるの\
をどう防ぐかがポイントです\\
。
私はまだ答えを見つけていません。
c++ - C++ で UTF-16 サロゲート 10 進数を UNICODE に変換する方法
などのパラメータから文字列データを取得しまし��
た。
これらは、10 進数で表された Unicode の UTF-16 サロゲート ペアです。
標準ライブラリで「U+1F62C」などの Unicode コード ポイントに変換するにはどうすればよいですか?