RestTemplate Опубликовать данные UTF-8 с setContentType(MediaType.MULTIPART_FORM_DATA)

Я использую Spring для Android. Я хочу создать регистрационную форму в своем приложении для Android. Пользователи могут заполнять форму в формате utf-8, но когда данные отправляются на сервер и сохраняются в базе данных MySQL, я нахожу ?????? в моей базе данных тип столбца field.table установлен на utf8_general_ci. Мой вопрос: мне нужно что-то установить для типа контента на php-странице ИЛИ мне нужно установить UTF-8 в моем коде Android? Что я должен сделать для них обоих? Вот мой код, который я использую: я сделал то же самое, что и здесь

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);

Изменить: проблема не решена


person Misagh Aghakhani    schedule 16.02.2013    source источник
comment
Вы решили проблему? У меня такая же проблема.   -  person A M    schedule 09.04.2019


Ответы (1)


Отладка здесь будет вашим другом. Некоторые вещи, о которых следует знать:

  1. Убедитесь, что все, что вы используете для просмотра данных, не является проблемой. MySQL хранит ????? или это ваше приложение просто показывает вам ????
  2. Проверьте форматирование содержимого при подключении к MySQL, это вероятный виновник. (Вы можете проверить это, просто написав приложение для передачи данных в вашу базу данных, не выходя из сети)
  3. Убедитесь, что ваше веб-приложение обрабатывает чтение в UTF-8. Например, в более старой версии JBoss я работал со встроенным контейнером apache и читал строки из соединения в наборе символов по умолчанию для машины, на которой работал сервер (которая не была utf-8)
person BenG    schedule 18.02.2013
comment
спасибо, да, магазин MySQL ??????. когда я меняю тип контента в своем коде Android на requestHeaders.setAccept(Collections.singletonList(new MediaType(application, json))); вместо requestHeaders.setContentType(MediaType.MULTIPART_ FORM_DATA); и я отправляю данные без изображения, моя проблема исчезает. тип контента на php-странице установлен на application/json - person Misagh Aghakhani; 20.02.2013
comment
Вы также устанавливаете кодировку содержимого в utf-8 при отправке запроса? - person BenG; 20.02.2013