Я пытаюсь понять, как декодировать некоторые поврежденные символы, которые у меня есть в электронной таблице. Есть список названий веб-сайтов: некоторые на английском, некоторые на греческом, некоторые на других языках. Например, греческая фраза ΕΛΛΗΝΙΚΑ ΝΕΑ ΤΩΡΑ
отображается как ŒïŒõŒõŒóŒùŒôŒöŒë ŒùŒïŒë Œ§Œ©Œ°Œë
. Итак, с пробелами все в порядке, но с буквами все пошло не так.
Я заметил, что буквы были преобразованы в пары символов:
Ε
- Ε
Λ
- Λ
И так далее. Так что это почти всегда Œ
, а затем какой-то другой символ после него.
Я пошел дальше, удалил повторяющуюся букву и проверил разницу в ASCII-кодах актуальной фразы и того, что осталось от испорченной фразы: ord('ï') - ord('Ε')
и так далее. Разница почти всегда одна и та же: `
678
678
678
676
676
677
676
678
0 (this is a whitespace)
676
678
678
0 (this is a whitespace)
765
768
753
678
Я вручную расшифровал некоторые другие буквы из других заголовков:
Greek
Œë Α
Œî Δ
Œï Ε
Œõ Λ
Œó Η
Œô Ι
Œö Κ
Œù Ν
Œ° Ρ
Œ§ Τ
Œ© Ω
Œµ ε
Œª λ
œÑ τ
ŒØ ί
Œø ο
œÑ τ
œâ ω
ŒΩ ν
Symbols
‚Äò ‘
‚Äô ’
‚Ķ …
‚Ć †
‚Äú “
Other
√© é
Хорошо, что у меня есть перевод этой фразы, но есть пара других, для которых у меня нет перевода. Я был бы рад увидеть любой совет, потому что поиск в StackOverflow не показал мне ничего связанного.
Это проблема кодировки символов. Судя по всему, строка имеет кодировку Mac OS Roman (догадалась по этому сайту). Код IANA для этой кодировки — macintosh
, а номер кодовой страницы Windows — 100000.
Вот функция Python, которая декодирует macintosh
в utf-8
строки:
def macToUtf8(s):
return bytes(s, 'macintosh').decode('utf-8')
print(macToUtf8('ΕΛΛΗΝΙΚΑ ΝΕΑ ΤΩΡΑ'))
# outputs: ΕΛΛΗΝΙΚΑ ΝΕΑ ΤΩΡΑ
Я предполагаю, что ваша электронная таблица была сохранена на компьютере Mac или, возможно, сохранена с использованием какой-либо настройки на основе Macintosh.
Смотрите также этот выпуск: Какую кодировку использует MAC Excel?
@pgndck А, импорт Google Sheet с Mac звучит правдоподобно. Подходит ли решение Python? Или было бы лучше, если бы это был сценарий приложения или что-то еще?
Большое спасибо! Электронная таблица представляет собой документ Google Spreadsheets, поэтому он размещен в Интернете, я не уверен, как он был сохранен. Возможно, это было импортировано из файла. Спасибо.