Мое требование - заменить параметр в шаблоне rtf динамическими значениями.Как обновить параметр в файле rtf с арабским текстом
Я разрабатываю приложение в Oracle adf.
Сценарий: файл шаблона находится на арабском языке с некоторыми параметрами, которые необходимо заменить во время выполнения и создать файл отправки с обновленными значениями.
Решение принято: Метод читает шаблон и генерирует другой .rtf-файл на арабском языке, заменяя параметры динамическими значениями.
Проблема: если значение параметра на арабском языке, то оно заменяет параметр каким-либо другим unicode (нечитаемым форматом), где, как и в случае английского значения параметра, оно работает как ожидалось.
Просьба помочь мне разобраться.
Ниже приведен код, создающий другой .rtf-файл.
sendingFileName = Constants.TEMPLATE_FILE + key + ".rtf";
String str = "";
FileInputStream fi;
try {
fi = new FileInputStream(sendingFileName);
BufferedInputStream bun = new BufferedInputStream(fi);
StringBuilder sbb = new StringBuilder();
int c = 0;
while ((c = bun.read()) != -1) {
sbb.append((char)c);
}
for (String param : (Set<String>)parameters.keySet()) {
String param1 = param +""; //"$" + param + "$";
int index = sbb.indexOf(param1);
String paramValue = (String)parameters.get(param);
if(index>-1) {
sbb.replace(index, index + param1.length(), paramValue);//now run
}
}
str = sbb.toString();
fileName = Constants.SENT_TEMPLATE + key + "_" + new Date().getTime() + ".rtf";
DataOutputStream dos;
File _file = new File(fileName);
dos = new DataOutputStream(new FileOutputStream(_file));
dos.writeBytes(str);
dos.close();
fi.close();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
Похоже, вам нужно установить кодировку символов для вашего файла. Посмотрите на это: http://stackoverflow.com/a/7895133/3415090 – mohammedkhan