2

文字セットを使用して文字列をエンコードするとUTF-8、Java と ColdFusion で異なる結果が得られます

エンコードする文字列:

   ONE TWO`< newline >`THREE FOUR

Android (Java) での結果:

   ONE+TWO%0ATHREE+FOUR

ColdFusion での結果:

   ONE%20TWO%0D%0ATHREE%20FOUR

UTF-8を使用してエンコード/デコードしている間、標準を定義し、すべてのテクノロジーがそれに準拠していると思いましたUTF-8。しかし、そうではないようです。どの文字セットに依存する必要がありますか?

編集:

文字列をエンコードする ColdFusion コード:

<cfset encodedString = URLEncodedFormat(str,"UTF-8")>

文字列をエンコードする Java コード:

URLEncoder.encode(str,"UTF-8");
4

1 に答える 1

3

あなたの問題はutf-8とは関係ありません。ここにはプレーンなASCII文字しかないからです!

あなたがしているのはURLエンコーディングであり、これには確かに複数のバージョンがあります。

HTTPクエリ文字列では、スペースはとしてエンコードされ+ます。

スペースのパーセント%エンコーディングはです%20

どちらのエンコーディングも使用できる場合と使用できない場合があります...通常、+Androidクラスのようにスペースに使用する方が、私の経験ではより互換性があります。正しくデコードされない壊れたコードがたくさんあるからです。

https://en.wikipedia.org/wiki/Query_string#URL_encoding

https://en.wikipedia.org/wiki/Percent-encoding

于 2013-02-21T16:41:07.727 に答える