RestTemplate使用setContentType(MediaType.MULTIPART_FORM_DATA)发布UTF-8数据

时间:2013-02-16 14:33:43

标签: android spring utf-8 resttemplate

我正在使用spring for android。我想在我的Android应用程序中创建注册表单。用户可能会用utf-8格式填写表单但是当数据发送到服务器并存储在MySQL数据库中时我发现??????在我的数据库field.table的列类型设置为utf8_general_ci。我的问题是: 我需要在php页面中为内容类型设置一些东西,还是需要在我的android代码中设置UTF-8?我该怎么办? 这是我正在使用的代码:我和here

一样
File cacheDirectory = context.getFilesDir();
tmpFile = new File(cacheDirectory.getPath() + "/" + "avatar.png");
Resource file = new FileSystemResource(tmpFile);

MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();
formData.add("firstName", registerFields[0]);
formData.add("lastName", registerFields[1]);
formData.add("userName", registerFields[2]);
formData.add("file", file);

HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.MULTIPART_ FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new        HttpEntity<MultiValueMap<String, Object>>(formData, requestHeaders);


RestTemplate restTemplate = new RestTemplate(true);

restTemplate.getMessageConverters().add(
     new GsonHttpMessageConverter());
restTemplate.getMessageConverters().add(
new StringHttpMessageConverter());
ResponseEntity<Success[]> response = restTemplate.exchange(url, HttpMethod.POST,       requestEntity,Success[].class);
return response.getBody();

编辑:解决了UTF-8的问题我刚将这一行添加到我的config.php文件中并解决了问题

mysql_query(“SET character_set_results = utf8,character_set_client = utf8,character_set_connection = utf8,character_set_database = utf8,character_set_server = utf8”,$ con);

编辑:未解决问题

1 个答案:

答案 0 :(得分:1)

这里的调试将成为你的朋友。有些事情需要注意:

  1. 检查您用于查看数据的任何内容都不是问题。 MySQL存储?????或者你的应用只是向你展示????
  2. 检查与MySQL连接的内容格式,这可能是罪魁祸首。 (您可以通过编写应用程序来测试这一点,以便将数据推送到数据库而无需通过网络)
  3. 检查您的网络应用程序是否正在处理UTF-8中的读数。例如,在旧版本的JBoss中,我使用嵌入式apache容器从服务器运行的机器的默认字符集中的连接读取字符串(不是utf-8)