如何知道我的HTTP请求是否使用UTF-8?

时间:2011-05-11 12:09:27

标签: java android http unicode utf-8

我正在尝试修复Android应用中的问题。该应用程序将HTTP请求发布到Web服务。当请求中的文本包含瑞典字符Å,Å和Ö时,它不起作用。拥有网络服务的人说这是因为请求必须以UTF-8编码,他们说不是。

该应用程序使用org.apache.http.impl.client.DefaultHttpClient,我假设此行说明应该使用UTF-8:HttpProtocolParams.setContentCharset(params,“UTF-8”);

我使用Wireshark查看应用程序发送的内容,字符串“TeståäöÅÄÖéüà”显示为: “测试\ 345 \ 344 \ 366 \ 305 \ 304 \ 326 \ 351 \ 374 \ 340”

我发现by this table数字是字符“Unicode代码点”的八进制表示。那不是UTF-8,对吧?

如果它是UTF-8,那么特殊字符将由两个字节表示,例如“å”的“c3 a5”和“ä”的“c3 a4”?

所以:
1.我对Unicode与UTF-8的理解是否正确? 2.我是否正确,发送的内容不是UTF-8编码?
3.如何使用UTF-8发送DefaultHttpClient?

乔恩

1 个答案:

答案 0 :(得分:2)

正如Stephen所指出的,你必须区分http头(用于url)和请求体中使用的编码。

无论如何,区别不在Unicode与UTF-8之间,UTF-8是UNICODE的字符串编码之一(UTF-16是另一种)。

你并没有使用Unicode,显然是旧的Latin1(ISO 8859-1):每个字符一个字节。恰好,前128个Unicode码点与Latin1使用的位置重合(大致)。

帮自己一个忙,read the basics about Unicode,它需要你一两天,这对于今天(和明天)的任何程序员来说都是非常有价值和必要的知识。