Я новый программист, и у меня возникла пара проблем с кодом, с которым я работаю.
По сути, код получает форму от другого JSP, читает байты, анализирует данные и отправляет результаты в SalesForce, используя DataInputStream.
//Getting the parameters from request
String contentType = request.getContentType();
DataInputStream in = new DataInputStream(request.getInputStream());
int formDataLength = request.getContentLength();
//System.out.println(formDataLength);
byte dataBytes[] = new byte[formDataLength];
int byteRead = 0;
int totalBytesRead = 0;
while (totalBytesRead < formDataLength)
{
byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
totalBytesRead += byteRead;
}
Работает нормально, но только если код обрабатывает нормальные символы. Всякий раз, когда он пытается обработать специальные символы (например, французские символы: àâäæçéèêëîïôùûü), я получаю в результате следующую тарабарщину:
à à ¢ ¤¤Ã¦Ã§Ã © èêà «Ã®Ã¯Ã´Ã¹Ã» ü
Я понимаю, что это может быть проблема DataInputStream и того, как он не возвращает кодированный в UTF-8 текст. Ребята, вы предлагаете какие-либо предложения по решению этой проблемы?
Все файлы .jsp включают <% @ page pageEncoding = "UTF-8" contentType = "text / html; charset = UTF-8"%>, и настройки Tomcat в порядке (URI = UTF-8 и т. Д.). Я попытался добавить:
request.setCharacterEncoding("UTF-8");
и
response.setCharacterEncoding("UTF-8");
безрезультатно.
Вот пример того, как он анализирует данные:
//Getting the notes for the Case
String notes = new String(dataBytes);
System.out.println(notes);
String savenotes = casetype.substring(notes.indexOf("notes"));
//savenotes = savenotes.substring(savenotes.indexOf("\n"), savenotes.indexOf("---"));
savenotes = savenotes.substring(savenotes.indexOf("\n")+1);
savenotes = savenotes.substring(savenotes.indexOf("\n")+1);
savenotes = savenotes.substring(0,savenotes.indexOf("name=\"datafile"));
savenotes = savenotes.substring(0,savenotes.lastIndexOf("\n------"));
savenotes = savenotes.trim();
Заранее спасибо.