23

ツールAにエンコードAのドキュメントAが表示され、ツールBにエンコードBのドキュメントBが表示されます。B(の一部)をAにカットアンドペーストすると、結果の文字エンコードはどうなりますか?これは、ツールAとツールB、および貼り付けバッファーに保持されている情報(おそらくエンコードを含めることができますか?)とオペレーティングシステムに依存することを理解しています。

高品質のツールは何をすべきですか?実際には、一般的なツール(Word、TextPad、さまざまなIDEなど)のどれだけがうまく機能しますか?

4

4 に答える 4

21

まず、テキストエディタのテキストの内部表現は、ファイルを保存するときにテキストがどのようにエンコード(シリアル化)されるかには関係ありません。したがって、ドキュメントはエンコーディングの「中に」はありません。それは抽象的な文字のシーケンスです。ドキュメントがファイルに保存される(またはネットワーク経由で送信される)とエンコードされます。

クリップボードに何を置くかは、各アプリケーションが決定します。通常、実行内容を認識しているWindowsアプリは、クリップボードにさまざまな表現を配置します。他のアプリを貼り付けると、アプリはそのニーズに最適な表現を探します。

あなたの場合、テキストエディタ(それが何をしているのかを知っている)は選択された文字列のUnicode表現をクリップボードに置きます(WindowsではUnicodeは通常UTF-16として移動されますが、それは重要ではありません)。他のアプリに貼り付けると、選択ポイントでそのUnicode文字のシーケンスがドキュメントに挿入されます。

「ClipSpy」と呼ばれるアプリが浮かんでいて、私が話していることをインタラクティブに確認するのに役立ちます。

于 2009-12-18T18:18:12.397 に答える
2

Unicodeの正規化を調べたところ、次の動作が見られました。macOS 10.15.7のFirefoxで正規に分解された文字列(NFD)をコピーすると、Chromeに貼り付けるときに文字列がNFCに正規化されます。奇妙なことに、貼り付けはクリップボードの内容に影響を与えます。Firefoxで文字列を再度貼り付けると、そこでも正規に作成されます。Firefoxに再度貼り付ける前に他の場所に貼り付けないと、NFDフォームは存続します。興味深いことに、この問題は他の方向では発生しません。Chromeで正規に分解された文字列をコピーすると、わかりやすい場所にNFD形式で貼り付けられます。私の結論は、Firefoxは他のアプリケーションとは異なる方法でテキストをクリップボードに保存するということです。これを自分で試す1つの方法は、コピーすることです。'mañana' === 'mañana'JavaScriptコンソールに。右側の文字列のNFD形式がコピー&ペーストを生き残った場合、ステートメントはfalseを返します。

于 2020-12-20T09:38:55.067 に答える
1

これはとても良い質問です。コピー/貼り付けすると、正確に何がコピー/貼り付けされますか-文字またはバイト?。BYTESの場合、それらはどのエンコーディングに含まれていますか?

答えからすると、答えは「状況次第」のようです。プログラムが異なれば、クリップボードに異なるものが配置され、複数の表現が配置されることもあります。

次に、貼り付けプログラムは、最適なものを選択し、それを使用して「正しいことを行う」必要があります。

于 2020-01-16T19:45:57.400 に答える
0

@Kaspar Etterで変換した後、いくつかのテストを行いました。これが私が見つけたものです:

コピー元と貼り付け先:

Firefox:
FirefoxからFirefox:正規化なし
他のアプリからFirefox:正規化
なしFirefoxから他のアプリ:正規化

AppleScript、JXA、またはPythonを使用してFirefoxからコピーされたテキストを含むSystemClipboardを直接読み取っても、テキストは正規化されたままです。FirefoxからFirefoxへのコピーと貼り付けには正規化が含まれないため、Firefoxはコピープロセス中にテキストを正規化しない可能性があります。正規化がいつ行われるのかわかりません。

Safari(iOSではなくMacOS):
SafariからSafari:正規化
他のアプリからSafari:正規化
Safariから他のアプリ:正規化なし

Safari(MacOS)の場合、正規化は少なくともinstructure.comによるCanvasでも行われます。クラシッククイズの空欄の質問では、生徒がクイズにヘブライ語を入力して「送信」を押すと、入力は正規化されましたが、回答キーは正規化されていませんでした。ただし、新しいクイズでは、入力キーと回答キーの両方が正規化されています。それは私には謎です。

Chrome:
ChromeからChrome:正規化なし
他のアプリからChrome:正規化なし(Firefoxオーバーライド)
Chromeから他のアプリ:正規化なし(Safariオーバーライド)

結論:FirefoxとSafariは逆の動作をします。Chromeは正常かつ一貫して動作します(FirefoxおよびSafariによってオーバーライドされる場合を除く)。

于 2021-03-05T16:13:34.393 に答える