進化する仕様を読んでから、私はRFC 3986が最終的にエスケープオクテットシーケンスのためのUTF-8エンコーディングに定住したと仮定していました。つまり、私のURIが%XX%YY%ZZ
ならば、デコードされたオクテットのシーケンス(スキーム固有の部分のURI)を取得し、結果のバイトをUTF-8として解釈して、デコードされた情報が意図されたものかどうかを調べることができます。実際には、私はこのコードを自動的に私のために行うJavaScript decodeURIComponent()
を呼び出すことができます。データのURIの文字セット
そしてIは、(自然に)符号化されたデータの文字セットを示しcharset
引数を含むdata:
のURI、RFC 2397、の仕様を読み取ります。しかし、それはどのように機能しますか?もし私が2八重奏でエンコードされた配列%XX%YY
が私のdata:
URIにあるならば、charset=iso-8859-1
は、ではなく、がUTF-8シーケンスとして解釈されるべきであることを示しています.ISOの各バイト-8859-1は文字を表します)? RFC 2397は、それが「ギリシャの[sic]文字」の一例与えるので、これを示すようだ:
data:text/plain;charset=iso-8859-7,%be%fg%be
をしかし、これは(UTF-8でエンコードされたオクテットを想定)のJavaScript decodeURIComponent()
を抽出するために使用することができないことを意味しますデータURIからの文字列、正しい?これは、charsetがUTF-8以外のものであれば、データURIの独自のデコードを作成する必要があることを意味しますか?
これは、RFC 2397が現在RFC 3986と競合していることを意味しますか?UTF-8が想定されているようです。あるいは、RFC 3986は、 "新しいURIスキーム"を参照するだけです。すなわち、data:
URIスキームが盛り込まれ、エンコードされたオクテットが何を意味するのかを指定する独自のテクニックがあります。
現時点では、data:
は独自のルールで再生され、UTF-8以外の文字セットを示す場合は、JavaScriptでdecodeURIComponent()
以外のものを使用する必要があります。交換方法に関する推奨事項も歓迎されます。