0

文字列をutf-8にフォーマットするのに問題があります。このスクリプトでは、Excelファイルからデータを取得し、それをループで出力しています。問題は、特殊文字を含む文字列が正しく表示されないことです。

その結果、「Patrīcija」ではなく「PatrÄ«cija」が表示され続けますこの問題の解決策が見つからないようです

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    import sys
    import xlrd
    import datetime

    def todaysnames():
    todaysdate = datetime.datetime.strftime(datetime.date.today(), "%d.%m")

    book = xlrd.open_workbook("vardadienas.xls")
    sheet = book.sheet_by_name('Calendar')
    for rownr in range(sheet.nrows):
        if sheet.cell(rownr, 0).value == todaysdate:
            string = (sheet.cell(rownr, 1).value)
            string = string.encode(encoding="UTF-8",errors="strict")
            names = string.split(', ')
            return names

    names = todaysnames()
    for name in names:
        print name
4

2 に答える 2

1

エンコーディングをに変更しiso8859_13(Baltic languages)、修正しました。

于 2012-08-25T20:05:21.997 に答える
-1

あなたの問題はによって引き起こされているのではないかと思いますprint。xlrdはutf8を返します。コンソールのエンコーディングによっては、print正しく印刷できない場合があります。フランスのWindows(エンコーディングはcp1252)で時々これに気づきました

次の質問:Python、Unicode、およびWindowsコンソールは、Windowsのコンソールでunicode文字を印刷する方法を説明しています。自分で試したわけではありませんが、よさそうです。

お役に立てば幸いです

于 2012-08-25T19:33:48.740 に答える