Jython 2.1 and Cheetah:Cyrillic templates output mixed encoding
Mike Grigorov
mikesg at abv.bg
Fri Mar 26 02:54:05 EST 2004
I am using cheetah with jython 2.1 and I have problem generating templates
that contain cyrillic text. Some texts are printed OK and others are not.
I searched Jython and cheetah projects mailing lists on sourceforge.net as
well as these groups and tried some other fixes proposed but without success.
I call the template like this:
PythonInterpreter pyiInterp = new PythonInterpreter();
pyiInterp.set("textTool", TextToolkit.getInstance());
String _body = readFile(strTemplateFile.replace('\\', '/'));
//----Encoding:
PyString _pyBody = new PyString(_body);
//----
pyiInterp.set("templBody", _pyBody);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PrintWriter pwOut = new PrintWriter(bos);
pyiInterp.setOut(pwOut);
pyiInterp.exec("from Cheetah.Template import Template");
pyiInterp.exec("t = Template(source=templBody)");
pyiInterp.exec("t.textTool = textTool");
pyiInterp.exec("print t");
I tried replacing the section marked as //---Encoding:
String isoScript = _body;
try {
//The call to sun.io.Converters.getDefaultEncodingName() returns "Cp1251"
byte[] bytes = _body.getBytes(sun.io.Converters.getDefaultEncodingName());
isoScript = new String(bytes, "ISO-8859-1");
}
catch (Exception ex) {
System.out.println("CONVERSION ERROR:" + ex);
}
PyString _pyBody = new PyString(isoScript);
This resulted in the problem inverted - the 'good' text became 'bad' and vice versa.
Here are sample lines one of which prints good text and the second - not
good(depending on its position in the template) /I guess text will be garbled
here/ :
${textTool.filler(35, " ")}????????? ????
${textTool.filler(35, " ")}???????????? ?? ??????????
textTool is a java object and this call produces 35 spaces
The encoding of the lines is the same(I checked the int values for the
letters).
I tried:
import sys
sys.setdefaultencoding('cp1251')
It didn't help but it caused compilation of the encodings\cp1251.py module ->
cp1251$py.class so I guess it was taken into account
Please guide me to papers that can help solving this or propose ideas what
might be causing this behaviour.
Thanks for your cooperation
Mike
More information about the Python-list
mailing list