The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Python: возможно ли использования кодировок отличных от utf8?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Python)
Изначальное сообщение [ Отслеживать ]

"Python: возможно ли использования кодировок отличных от utf8?"  +/
Сообщение от Аноним (0), 13-Авг-20, 23:29 
Добрый день. Интересует способ использовать utf16 в строках в исходнике (без костылей которые я могу придумать, но будет больно поддерживать).

Указание кодировки в формате

# -*- coding: utf16 -*-
не работает (пару лет назад работало): если файл с BOM, то пишет
SyntaxError: Non-UTF-8 code starting with '\xff' in file ../../tx_utf16.py on line 1, but no encoding declared;
если без
SyntaxError: Non-UTF-8 code starting with '\xff' in file ../../tx_utf16.py on line 4194, but no encoding declared;
естественно это не utf-8 это utf-16, и я указал кодировку. Зачем он тупит?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

5. Сообщение от eRIC (ok), 19-Авг-20, 11:16   +/
SyntaxError: Non-UTF-8 code starting with
> '\xff' in file ../../tx_utf16.py on line 4194, but no encoding declared;
> естественно это не utf-8 это utf-16, и я указал кодировку. Зачем
> он тупит?

Python 3 по умолчанию использует UTF-8, скорее всего на строчке 4194 у вас данные которые написаны не в UTF-8 кодировке. Попробуйте использовать конструкции decode/encode чтобы перевести в правильной кодировке данные программе.


Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6

6. Сообщение от Аноним (0), 20-Авг-20, 18:16   +1 +/
В той строчке у меня комментарий, расшифровывающий юникодные символы, отличающиеся между платформами. Они корректные только в utf16. Я в принципе пока это обошёл, но чувствую на виндоус опять словлю проблем. Я так понял в python3 все строки (включая комментарии) расшифровываются в utf8 внутри? Во 2 можно было выбирать любую кодировку, в том числе для операций с файловыми путями.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #7, #8

7. Сообщение от Аноним (0), 20-Авг-20, 18:22   +/
Проблемы у меня от того, что мне нужно обработать утф8 файлы с виндоус, некорректные в линуксе, на линуксе, потом вернуть их обратно и отправить на виндоус. Выполняю очень технологичную замену символов при чтении и обратную замену при записи, ну и конечно в коде только коды символов/байтов. Я не в восторге, если честно, да и кто знает какие ещё там последовательности криво отображаются между платформами. Спасибо хоть интернет у нас на линуксе -- разгребать юникодные косяки IIS было бы ещё печальней.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

8. Сообщение от eRIC (ok), 21-Авг-20, 09:28   +/
> в python3 все строки (включая комментарии) расшифровываются в utf8 внутри? Во
> 2 можно было выбирать любую кодировку, в том числе для операций
> с файловыми путями.

да в 3м все в utf8. во 2й версии если юникод то приходилось типа u'бла бла бла' писать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #9

9. Сообщение от Аноним (0), 21-Авг-20, 19:22   +/
Там в коде полно артефактов времён второй версии. Просто мне был нужен utf16 вместо utf8, а получается нельзя иметь декодированные строки в нём (при конвертации корректный utf16 превращается в некорректный платформозависимый utf8), во всяком случае в ряде внешних либ. Насчёт комментариев я погорячился, это докстринг, но трейс указывает куда угодно, только не на место проблемы. В общем, я разобрался, целиком мой косяк, я отвлёкся на артефакты, перепутал различные проблемы, и искал совсем не там, где стоило бы. А ещё лучше не работать с питоном на венде/маке, лучше насовать немного костылей на линуксе, но зато корректно работать везде будет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру