- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 
for (int i = 0; i != nl.length(); i++)
{
    out.write(nl.charAt(i));
}
for (int i = 0; i != footerStart.length(); i++)
{
    out.write(footerStart.charAt(i));
}
for (int i = 0; i != type.length(); i++)
{
    out.write(type.charAt(i));
}
for (int i = 0; i != footerTail.length(); i++)
{
    out.write(footerTail.charAt(i));
}
for (int i = 0; i != nl.length(); i++)
{
    out.write(nl.charAt(i));
}
                                
 Follow us!
Мда. О кодировках они, похоже, не слышали.
А через Charset походу не хотят конвертить из-за производительности. На каждую строку будет создаваться новый массив и все такое.
P.S. Ну хотя можно и один раз сконвертить, в статике.
И если это сделать в статике, то можно юзать версию write(), которая принимает byte[]. Будет намного шустрее, чем эти говноциклы ;)
Я ради интереса заглянул в сишную реализацию в gnupg, там код гораздо понятнее и вроде даже короче.
char[] и String - нельзя, полагается прогонять через Writer, чтобы в правильной кодировке писалось.