Важно отметить, что формат файлов Unicode отсутствует. Unicode может быть закодирован в байтах несколькими различными способами. Чаще всего UTF-8 или UTF-16. Вам нужно будет узнать, какой из них выводит ваш сторонний инструмент. После того, как вы знаете, что преобразование между различными кодировками довольно легко:
in_file = open("myfile.txt", "rb")
out_file = open("mynewfile.txt", "wb")
in_byte_string = in_file.read()
unicode_string = bytestring.decode('UTF-16')
out_byte_string = unicode_string.encode('ASCII')
out_file.write(out_byte_string)
out_file.close()
Как отмечалось в других ответах, вы, вероятно, будете хотеть, чтобы поставить обработчик ошибок для метода кодирования. Использование «replace» в качестве обработчика ошибок прост, но будет калечить ваш текст, если он содержит символы, которые не могут быть представлены в ASCII.
Спасибо, что указал на потенциальные проблемы. Однако я не рискую иметь неконвертируемые символы Юникода в содержимом выходного файла.Он просто выводит схему SQL внутренней базы данных и не содержит каких-либо символов вне обычного, то есть за пределами ASCII. – 2008-10-06 17:35:33
@Ray Vega: Это вы знаете прямо сейчас. Это ошибка и потенциальная ошибка, предполагающая, что данные Unicode будут иметь только символы ASCII. – 2011-09-01 18:00:09