【问题标题】:RestTemplate Post UTF-8 data with setContentType(MediaType.MULTIPART_FORM_DATA)RestTemplate 使用 setContentType(MediaType.MULTIPART_FORM_DATA) 发布 UTF-8 数据
【发布时间】:2013-02-16 14:33:43
【问题描述】:

我正在为 Android 使用 spring。我想在我的 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);

编辑:未解决问题

【问题讨论】:

  • 问题解决了吗?我有同样的问题。

标签: android spring utf-8 resttemplate


【解决方案1】:

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

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

【讨论】:

  • thx 是 MySQL 存储 ??????。当我将我的 android 代码中的内容类型更改为 requestHeaders.setAccept(Collections.singletonList(new MediaType("application", "json"))) ;而不是 requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);我发送没有图像的数据我的问题就消失了。 php页面中的内容类型设置为application/json
  • 您发送请求时是否也将内容编码设置为utf-8?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
相关资源
最近更新 更多