Это вопрос типа Python 101, но он некоторое время меня озадачил, когда я попытался использовать пакет, который, казалось, преобразовал мой ввод строки в байты.
Как вы увидите ниже, я нашел ответ для себя, но я чувствовал, что стоит записывать здесь, потому что мне потребовалось время, чтобы раскопать то, что происходит. Это похоже на Python 3, поэтому я не ссылался на исходный пакет, с которым я играл; это не кажется ошибкой (просто, что конкретный пакет имел метод .tostring()
, который явно не создавал то, что я понимал как строку...)
Моя тестовая программа выглядит следующим образом:
import mangler # spoof package
stringThing = """
<Doc>
<Greeting>Hello World</Greeting>
<Greeting>你好</Greeting>
</Doc>
"""
# print out the input
print('This is the string input:')
print(stringThing)
# now make the string into bytes
bytesThing = mangler.tostring(stringThing) # pseudo-code again
# now print it out
print('\nThis is the bytes output:')
print(bytesThing)
Результат этого кода дает следующее:
This is the string input:
<Doc>
<Greeting>Hello World</Greeting>
<Greeting>你好</Greeting>
</Doc>
This is the bytes output:
b'\n<Doc>\n <Greeting>Hello World</Greeting>\n <Greeting>\xe4\xbd\xa0\xe5\xa5\xbd</Greeting>\n</Doc>\n'
Таким образом, необходимо иметь возможность конвертировать между байтами и строками, чтобы не допустить, чтобы символы не-ascii превращались в gobbledegook.