我已经配置了apache httpClient,如下所示:
HttpProtocolParams.setContentCharset(httpParameters, "UTF-8");
HttpProtocolParams.setHttpElementCharset(httpParameters, "UTF-8");
我还为所有的http post和put请求包含了"http头Content-Type: application/json; charset=UTF-8"。
我试图发送包含特殊字符的json主体的http post/put请求(例如通过谷歌拼音键盘输入的中文字符、符号等)。这些字符在日志中显示为乱码,但我认为这是因为DDMS不支持UTF-8,正如这个问题所描述的那样。问题在于当服务器接收到请求时,有时候根本看不到这些字符(尤其是中文字符),或者当我们通过GET请求检索它时,它会变成无意义的垃圾。
我还尝试在一个字段中放置250个非ASCII字符,因为该特定字段应该能够容纳多达250个字符。然而,在服务器端验证失败,声称已超过250个字符的限制。 250个ASCII字符可以正常工作。
服务器人员声称他们支持UTF-8。他们甚至尝试模拟包含中文字符的post请求,并且数据被服务器成功接收。然而,这个人(一个中国人)使用安装了中文语言包的Windows计算机(我想,因为他可以在键盘上输入中文字符)。
我猜测Android客户端和由中国人制作的服务器使用的字符集不对齐。但我不知道哪一个是错误的,因为服务器人员声称他们支持UTF-8,而我们的rest客户端配置为支持UTF-8。
这让我想知道Android默认在所有文本输入中使用哪种字符集,以及它是否可以在程序中更改为不同的字符集。我试图找到有关如何在输入小部件上执行此操作的资源,但我没有找到任何有用的信息。
是否有办法为Android中的所有输入小部件设置字符集?或者我在REST客户端配置中漏掉了什么?或者,也许,服务器人员没有在他们的服务器上使用UTF-8,而是使用Windows字符集?