これは 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 に変換されることを避けるために、バイトと文字列の間で変換できる必要があります。