18

サイトを検証しようとすると、次のエラーが発生します。

テキストの実行はUnicode正規化フォームCではありません

A:それはどういう意味ですか?

B:notepad ++で修正できますか?

C:Bが「いいえ」の場合、無料のツール(dreamweaverではない)でこれを修正するにはどうすればよいですか?

4

2 に答える 2

20

どういう意味ですか?

W3Cから:

Unicodeでは、文字のシーケンスが異なる同じテキストを作成できます。たとえば、ハンガリー語のvilágを考えてみましょう。4番目の文字は、合成済みのU + 00E1 LATIN SMALL LETTER A WITH ACUTE(1文字)として、または U + 0061 LATIN SMALLLETTERAとそれに続くU+0301 COMBINING ACUTE ACCENT(2文字)の分解シーケンスとしてメモリに保存できます。 。

világ=világ

Unicode標準では、これらの選択肢のいずれかが許可されていますが、両方を同一として扱う必要があります。効率を向上させるために、アプリケーションは通常、検索または比較を実行する前にテキストを正規化します。この場合の正規化とは、すべての合成済み文字またはすべての分解文字を使用するようにテキストを変換することを意味します。

Unicode標準で指定されている正規化形式 には、NFC、NFD、NFKC、およびNFKDの4つがあります。Cは(事前)合成を表し、Dは分解を表します。Kは互換性を表します。相互運用性を向上させるために、W3CはWeb上でNFC正規化テキストを使用することを推奨しています。

「相互運用性を向上させる」ことに加えて、合成済みテキストは通常​​、テキストを分解するよりも見栄えが良くなります。

無料のツールでこれを修正するにはどうすればよいですか

text = unicodedata.normalize('NFC', text)お気に入りのプログラミング言語でPythonと同等の関数を使用する。

(または、プログラムを作成する予定がない場合は、質問をスーパーユーザーまたはWebマスターに移動する必要があります。)

于 2011-03-29T00:31:04.330 に答える
12

A.それはそれが言うことを意味します(簡単な答えについてはdan04の説明を、長い答えについてはUnicode標準を参照してください)が、それは単にバリデーターの作成者が警告を発行したかったことを示しています。HTML5ルールは正規化フォームC(NFC)を必要としません。それはむしろW3Cによって一般的に好まれているものです。

B. NFCを使用する方が実際に優れていると判断しない限り、何も修正する必要はありません。その場合、無料のBabelPadエディターなど、NFCに自動変換するためのさまざまなツールがあります。NFCにない1つの文字のみを処理する必要がある場合は、Fileformat.info文字検索などの文字情報リポジトリを使用して、文字の正規の分解を見つけて使用できます。

NFCを使用するかどうかは、多くの考慮事項と関係するキャラクターによって異なります。原則として、NFCの方がうまく機能しますが、場合によっては、代替の非NFCプレゼンテーションがより適切なレンダリングを生成したり、特定の処理でより適切に機能したりします。

たとえば、重複する質問では、参照Ωがメッセージのトリガーとして報告されています。(バリデーターは、プレーンテキストレベルのNFCチェックではなく、そのような参照として入力された文字も実際にチェックします。)参照はU + 2126 OHM SIGN“Ω”の略で、U + 03A9GREECKAPITALと標準的に同等であると定義されています。レターオメガ「Ω」。Unicode標準では、後者が優先文字であると明示的に規定されています。また、フォントでカバーする方が適切です。ただし、OHM SIGNを使用する特別な理由がある場合は、現在のHTML5ルールに違反することなくそれを行うことができ、バリデーターの警告を無視できます

于 2013-04-14T18:34:23.917 に答える