У меня проблема с символами Юникода в сгенерированном PDF. На моей рабочей станции все работает нормально, но в тестовой среде все идет не так.
Значение вставки кода следующее:
Font boldDefaultFont = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.BOLD);
// ...
PdfPCell headerCell = new PdfPCell();
// unit.getName() returns "°C"
Phrase header = new Phrase(unit.getName(), boldDefaultFont);
headerCell.addElement(header);
Исходный код Java находится в UTF-8.
Когда это выполняется в моей среде (java 1.6.0_18, WinXP), ячейка содержит °C
, как и следовало ожидать, но в тестовой среде (java 1.6.0_18, Win2003) результат равен °C
. Я понял, что это проблема кодирования (UTF-8 '°' равен 0xc2b0, что равно '° в iso-8859-1).
Пока я пробовал следующее:
1) добавление -Dfile.encoding=utf8
к параметрам java (не влияет ни в одной среде)
2) добавление ARIALUNI.TTF в тестовые среды C: \ WINDOWS \ Fonts (без эффекта)
3) закодировать unit.getName () в iso-8859-1, но из-за этого исчезла степень пения в моей машине.
Среда, которая просматривает pdf, не имеет никакого эффекта, pdf, сгенерированный на моей рабочей станции, хорошо виден везде и наоборот.
У кого-нибудь есть опыт по этому вопросу? Бьюсь об заклад, есть способ заставить это работать в обеих средах.