Это должно работать:
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
Нет аргументов для установки кодировки выходных символов напрямую, но это не должно быть проблемой на практике , поскольку ваш редактор PO будет автоматически использовать соответствующую кодировку символов, когда сохраняя PO-файл (тот, который поддерживает все символы, используемые в переводе), и замените CHARSET
в файле на имя кодировки. Если этого не произойдет, сообщите об ошибке.
Единственная проблема была бы, если бы файл POT содержал символы, отличные от ASCII, но xgettext
имеет код - from Аргумент
для этого, который указывает кодировку входных файлов. Если входные данные содержат символы, отличные от ASCII и - исходный код
установлен на правильную кодировку, выходной файл POT будет иметь кодировку символов UTF-8 (это не обязательно должно быть равно кодировке входных символов). Однако, если входные файлы содержат только символы ASCII, - from-code = UTF-8
, к сожалению, не будет иметь никакого эффекта.
msginit
фактически автоматически устанавливает кодировку символов на что-то ' соответствующий 'для выбранной целевой локали. Однако список пар кодировки символов кажется устаревшим; UTF-8 теперь действительно лучший выбор для всех языков.
Альтернативой было бы использование pot2po
вместо msginit
. Это всегда автоматически использует UTF-8, AFAICS. Однако, в отличие от msginit
, он не заполняет автоматически формы множественного числа в PO-файле, что может быть, а может и не быть проблемой (некоторые думают, что это задача редактора PO).