2

当我用 charset 对字符串进行编码时,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 回答