Android RestTemplate使用setContentType发布UTF-8数据(MediaType.MULTIPART\u FORM\u数据)

Android RestTemplate使用setContentType发布UTF-8数据(MediaType.MULTIPART\u FORM\u数据),android,spring,utf-8,resttemplate,Android,Spring,Utf 8,Resttemplate,我正在为android使用spring。我想在我的android应用程序中创建注册表。用户可能用utf-8格式填写表单,但当数据发送到服务器并存储在MySQL数据库中时,我发现??????在我的数据库字段中。表的列类型设置为utf8\U general\U ci。我的问题是: 我需要在php页面中设置内容类型还是在android代码中设置UTF-8?我应该为他们俩做些什么? 这是我正在使用的代码:我和 File cacheDirectory=context.getFilesDir(); tmpF

我正在为android使用spring。我想在我的android应用程序中创建注册表。用户可能用utf-8格式填写表单,但当数据发送到服务器并存储在MySQL数据库中时,我发现??????在我的数据库字段中。表的列类型设置为utf8\U general\U ci。我的问题是: 我需要在php页面中设置内容类型还是在android代码中设置UTF-8?我应该为他们俩做些什么? 这是我正在使用的代码:我和

File cacheDirectory=context.getFilesDir();
tmpFile=新文件(cacheDirectory.getPath()+“/”+“avatar.png”);
资源文件=新文件系统资源(tmpFile);
MultiValueMap formData=新链接的MultiValueMap();
formData.add(“firstName”,registerFields[0]);
formData.add(“lastName”,registerFields[1]);
formData.add(“用户名”,registerFields[2]);
formData.add(“文件”,文件);
HttpHeaders requestHeaders=新的HttpHeaders();
requestHeaders.setContentType(MediaType.MULTIPART uu格式u数据);
HttpEntity requestEntity=新的HttpEntity(formData,RequestHeader);
RestTemplate RestTemplate=新的RestTemplate(true);
restTemplate.getMessageConverters().add(
新的GsonHttpMessageConverter());
restTemplate.getMessageConverters().add(
新的StringHttpMessageConverter());
ResponseEntity response=restemplate.exchange(url,HttpMethod.POST,requestEntity,Success[].class);
返回response.getBody();
编辑:解决了UTF-8的问题我刚把这一行添加到我的config.php文件中,问题就解决了

mysql查询(“设置字符集结果=utf8,字符集客户端=utf8,字符集连接=utf8,字符集数据库=utf8,字符集服务器=utf8”,$con)


编辑:未解决问题

调试这里将是您的朋友。需要注意的一些事项:

  • 检查您用于查看数据的内容是否不是问题所在。MySQL是否存储?????或者你的应用程序只是向你展示
  • 检查MySQL连接上的内容格式,这可能是罪魁祸首。(您只需编写一个应用程序,将数据推入数据库,而无需上网即可对此进行测试)
  • 检查您的web应用程序是否正在处理UTF-8中的读取。例如,在较早版本的JBoss中,我使用嵌入式apache容器从运行服务器的机器(不是utf-8)的默认字符集中的连接中读取字符串

  • 这里将是你的朋友。需要注意的一些事项:

  • 检查您用于查看数据的内容是否不是问题所在。MySQL是否存储?????或者你的应用程序只是向你展示
  • 检查MySQL连接上的内容格式,这可能是罪魁祸首。(您只需编写一个应用程序,将数据推入数据库,而无需上网即可对此进行测试)
  • 检查您的web应用程序是否正在处理UTF-8中的读取。例如,在较早版本的JBoss中,我使用嵌入式apache容器从运行服务器的机器(不是utf-8)的默认字符集中的连接中读取字符串

  • thx yes MySQL store??????。当我将android代码中的内容类型更改为requestHeaders.setAccept(Collections.singletonList(新媒体类型(“应用程序”、“json”))时;而不是requestHeaders.setContentType(MediaType.MULTIPART uu形式u数据);我发送的数据没有图像,我的问题就消失了。php页面中的内容类型设置为application/json发送请求时是否也将内容编码设置为utf-8?thx yes MySQL store?????。当我将android代码中的内容类型更改为requestHeaders.setAccept(Collections.singletonList(新媒体类型(“应用程序”、“json”));而不是requestHeaders.setContentType(MediaType.MULTIPART uu形式u数据);我发送的数据没有图像,我的问题就消失了。php页面中的内容类型设置为application/jsonAre发送请求时您是否也将内容编码设置为utf-8?您解决了问题吗?我也有同样的问题,你解决问题了吗?我也有同样的问题。
    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();