0

ユニコード文字が少しむちゃくちゃになるという問題があります。変数を提供する構成ファイルがありますlocation。構成ファイル# -*- coding utf-8 -*-の一番上にありますがfile -bi config-file-name、エンコーディングがus-ascii何であるかを教えてくれます (iconvおよびrecode(Linux) を含む)、それを変更することを拒否します。

とにかく、ユニコード文字を含むいくつかのデータを取得し (以下のように渡されinput_dataます)、データを直接見ると問題なく見えます。ただし、次のどこかで噛み砕きます。

def make_message(input_data):

    messagestring = ''

    if isinstance(input_data, list):
        messagestring = '\n'.join(input_data)

    elif isinstance(input_data, dict):
        for key, val in input_data.items():
            messagestring += key + '\n'
            if isinstance(val, dict):
                for newkey, newval in val.items():
                    messagestring += newkey + ' ' + newval + '\n'
            else:
                messagestring += val + '\n'
    return messagestring

後で、これを次のように呼び出します。

weather_msg = location + '\n' + make_message(message)

私の構成ファイル(「場所」の由来)のエンコーディングにより、文字列全体が強制的にASCIIに変換されていると考えましたが、これは単なる推測であり、グーグルでは、それが想定されている方法であるかどうかわかりません仕事に。

エンコードを試みるなど、たくさんのことを試しましlocationたが、文字エンコーディングをグーグルで検索しましたが、ユニコード文字を元に戻すことができず、どこで噛んでいるのかわかりません。

ユニコードデータをアスキーに強制するどこかで私が犯している明らかな間違いを誰かが見ることができますか? 別の方法として、これをすべてファイルに書き出してから、それがより賢明な方法であり、エンコードの問題が解決されるかどうかを電子メールで送信することもできます。情報は十分に短かったので、私はそれを記憶に留めただけでしたが、これは馬鹿げたやり方だと言われても仕方ありません。

読んでくれてありがとう。

4

1 に答える 1