Текст UTF-8 искажен, когда форма отправляется как multipart/form-data

Попробуйте это

compile 'com.google.zxing:core:3.2.1'
compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
     String text="" // Whatever you need to encode in the QR code
     MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
     try {
    BitMatrix bitMatrix = multiFormatWriter.encode(text, BarcodeFormat.QR_CODE,200,200);
     BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
     Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
     imageView.setImageBitmap(bitmap);
     } catch (WriterException e) {
     e.printStackTrace();
  }

ОБНОВЛЕНИЕ

, если это не поможет вам попробовать это [ 115]

https://github.com/journeyapps/zxing-android-embedded

53
задан 4 revsAswin Anand 23 May 2017 в 02:26
поделиться

5 ответов

У меня была та же проблема с помощью свободного-городского-населения-fileupload Apache. Я не узнал то, что вызывает проблемы особенно, потому что у меня есть кодировка UTF-8 в следующих местах: 1. Метатег HTML 2. Сформируйтесь принимать-набор-символов приписывают 3. Фильтр Tomcat по каждому запросу, который устанавливает "UTF-8" кодирование

-> Мое решение, должен был особенно преобразовать Строки из ISO-8859-1 (или независимо от того, что кодировка по умолчанию Вашей платформы) к UTF-8:

new String (s.getBytes ("iso-8859-1"), "UTF-8");

надежда, которая помогает

Редактирование: запуск с Java 8 можно также использовать следующее:

new String (s.getBytes (StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
57
ответ дан 2 revs 7 November 2019 в 08:28
поделиться

Фильтр является искрогасящим для IE. Несколько других вещей проверить;

, Что страница кодирует и набор символов? Оба должны быть UTF-8

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

, Каков набор символов в метатеге?

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Ваша строка Подключения mysql указывает UTF-8? например,

jdbc:mysql://127.0.0.1/dbname?requireSSL=false&useUnicode=true&characterEncoding=UTF-8
2
ответ дан Michael Glenn 7 November 2019 в 08:28
поделиться

Вещь фильтра и установка Tomcat для поддержки UTF-8 URIs только важны, если Вы передаете через строку запроса URL, когда Вы были бы с HTTP ДОБИРАТЬСЯ. Если Вы используете POST со строкой запроса в теле сообщения HTTP, что важно, будет типом контента запроса, и это будет до браузера, чтобы установить тип контента на UTF-8 и отправить содержание с тем кодированием.

единственный способ действительно сделать это путем сообщения браузеру, что можно только принять UTF-8 путем установки заголовка Принимать-набора-символов на каждом ответе на "UTF-8; q=1, ISO-8859-1; q=0.6". Это поместит UTF-8 как высшее качество и набор символов по умолчанию, ISO-8859-1, как приемлемый, но более низкое качество.

, Когда Вы говорите, что имя файла искажено, оно искажено в возвращаемом значении HttpServletRequest.getParameter?

0
ответ дан nbeyer 7 November 2019 в 08:28
поделиться

Вы не используете UTF-8 для кодирования текстовых данных для HTML-форм. Стандарт HTML определяет две кодировки, и , соответствующая часть того стандарта здесь . "Старое" кодирование, чем ASCII дескрипторов, является application/x-www-form-urlencoded. Новый, который работает правильно, является multipart/form-data.

А именно, объявление формы похоже на это:

 <FORM action="http://server.com/cgi/handle"
       enctype="multipart/form-data"
       method="post">
   <P>
   What is your name? <INPUT type="text" name="submit-name"><BR>
   What files are you sending? <INPUT type="file" name="files"><BR>
   <INPUT type="submit" value="Send"> <INPUT type="reset">
 </FORM>

И я думаю, что это - все, что необходимо взволновать по поводу - веб-сервер должен обработать его. Если Вы запишете что-то, что непосредственно читает InputStream из веб-клиента, то необходимо будет читать RFC 2045 и RFC 2046 .

-1
ответ дан paulmurray 7 November 2019 в 08:28
поделиться

У меня была такая же проблема, и оказалось, что помимо указания кодировки в фильтре

request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");

необходимо добавить acceptcharset в форму

<form method="post" enctype="multipart/form-data" acceptcharset="UTF-8" > 

и запустите JVM с

-Dfile.encoding=UTF-8

. В метатеге HTML нет необходимости, если вы отправляете его в заголовке HTTP с помощью response.setCharacterEncoding ().

13
ответ дан 7 November 2019 в 08:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: