nmkru
@nmkru
beginner python programmer

Почему записывает данные иероглифами?

Сохраняю данные (ID игр) в txt файл, почему-то на ПК (Windows 8.1) все хорошо сохраняет цифрами.
А когда заливаю программу на сервер ( Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-100-generic x86_64), то данные сохраняются иероглифами. Пробовал менять кодировки encoding='cp1251', encoding='utf-8' результат один и тот же.
Не пойму почему? Менял и кодировку, все равно не помогает.
Подскажите как исправить?

 㘳㌲㈲㠲ਵ㌠㈶㈳㔳㜶 㘳㌲㈲㠲ਸ㌠㈶㈳㔳㐶 㘳㌲㌲㘵਱㌠㈶㈳㔳㔵 㘳㈲ㄱ㈷ਵ㌠㈶㈳㔳㈵ 㘳㌲㌲㜵ਰ㌠ㄶ㈲㈵㐷 㘳〲㌷㐰ਸ㌠ㄶ㐲〷〵 㘳㈱㜴㐰ਸ਼㌠〶㤹㈴㌲ 㘳㔱㈳㤳ਸ㌠〶㤹㈴㠱 㘳㈲㐳㤸ਵ㌠㈶㜳㤰㈹ 㘳㌲ㄷ㤳ਵ㌠〶㘳㘰㔶 㘳㌱㤶㤸ਸ㌠ㄶ㘳㜹〴 㘳㌱㤶㐷਴㌠ㄶ㘳㜹㠴 㘳㌱㤶㌷ਸ਼㌠ㄶ㘳㠹㔹 㘳㌱㤶㤸਱㌠ㄶ㘳㜹ㄶ


def get_text(game_id):
    with open('db.txt', 'r',  encoding='cp1251') as file:
        contents = file.read()
        gid = str(game_id)     
        if gid not in contents:
            with open('db.txt', 'a+', encoding='cp1251') as file:
                file.write(f'\n {gid}')
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Исправить этот файл можно так:

iconv -f utf-8 -t utf-16 < test.txt | sed '1s/^\xFF\xFE//' > test_fixed.txt


Под Linux советую encoding не использовать при работе с файлами, так как если специально не намудрить, будет правильно и красиво использоваться utf-8.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы