The following Python script can be used to change the encoding of a text file.
If invoked without parameters it will print some help and a list of all known encodings (and their aliases).
import codecs
import encodings.aliases
import os.path
import sys
if __name__ == "__main__":
if len(sys.argv) != 5:
print
print "USAGE:"
print
print " " + os.path.basename(sys.argv[0]),
print "<source> <source_encoding>",
print "<target> <target_encoding>"
print
print "EXAMPLES:"
print
print " " + os.path.basename(sys.argv[0]),
print "test.log cp850 test.log_utf8 utf8"
print
print "SUPPORTED ENCODINGS:"
l = []
for k, v in encodings.aliases.aliases.items():
if k not in l:
l.append(k)
if v not in l:
l.append(v)
l.sort()
i = 0
for enc in l:
if i % 4 == 0:
print
print " ",
print enc.ljust(18),
i += 1
sys.exit(1)
fin = codecs.open(sys.argv[1], "r", sys.argv[2])
fout = codecs.open(sys.argv[3], "w", sys.argv[4])
while True:
s = fin.read(8192)
if len(s) == 0:
break
fout.write(s)
fin.close()
fout.close()
Examples of invoking this from a Squish test scripts:
import os
def main()
s = 'python recode_txt.py'
s += ' "C:\\Users\\Me\\test.txt"'
s += ' cp1252'
s += ' "C:\\Users\\Me\\test2.utf8.txt"'
s += ' utf8'
os.system(s)
function main() {
s = 'python recode_txt.py';
s = s + ' "C:\\Users\\Me\\test.txt"';
s = s + ' cp1252';
s = s + ' "C:\\Users\\Me\\test2.utf8.txt"';
s = s + ' utf8';
OS.system(s);
}