LINUX.ORG.RU

Ubuntu-сервер на облаке. Имена файлов в ansii, и не получается сменить кодировку.

 , ,


0

1

Добрых суток. Проблема в том, что не получается сменить кодировку в именах англоязычных файлов, они по умолчанию всегда в ansii.

При этом русские шрифты поддерживаются без проблем. Дело совсем не в русских шрифтах, а в том, что мне необходимо, чтобы по умолчанию в системе была utf-8, а не ansii.

Вот данные, которые настроены сейчас:

LANG=
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=ru_RU.UTF-8

Python 3.4.2 (default, Oct 8 2014, 13:18:07)
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print('sys.getdefaultencoding(): ' + sys.getdefaultencoding())
sys.getdefaultencoding(): utf-8
>>> print('sys.getfilesystemencoding(): ' + sys.getfilesystemencoding())
sys.getfilesystemencoding(): utf-8
>>>

Чего только не перепробовал, ничего не помогает. Это проблема с облаком, или я всё-таки что-то не доделал?



Последнее исправление: Mixeyka (всего исправлений: 2)

Ответ на: комментарий от Mixeyka

1. Если размер символа в кодировке UTF-8 = 1 байт

Код имеет вид (0aaa aaaa), где «0» — просто ноль, остальные биты «a» — это код символа в кодировке ASCII;

anonymous
()
Ответ на: комментарий от anonymous

Вы пытаетесь сказать, что всё работает правильно? Проблема в том, что русские имена не читаются....

Вот такие ошибки возникают: UnicodeEncodeError 'ascii' codec can't encode characters in position 25-29: ordinal not in range(128)

Mixeyka
() автор топика
Ответ на: комментарий от Mixeyka

это питон 2, так и должно быть. и тему нужно было про это создавать. ему не нравится не название файла, а его содержимое.

anonymous
()
Ответ на: комментарий от anonymous

Пока из предположений это всё-таки проблема с локалью, потому как у людей аналогичный код работает хорошо.

Mixeyka
() автор топика
Ответ на: комментарий от Mixeyka

Трейс точно весь? Если да, то посмотри какое имя файла ему не нравится. Допиши в файле /python3/lib/python3.4/site-packages/django/template/loaders/filesystem.py перед 38 строкой:

open('/tmp/log.bin', 'wb').write(filepath.encode('utf-8'))

anonymous
()
Ответ на: комментарий от anonymous

Добавил эту строку в два места, где возникала эта ошибка. После этого появилась новая - internal server error.

Только я в логах nginx что-то следов не вижу, то есть причин.

Mixeyka
() автор топика
Ответ на: комментарий от anonymous

при попытке прочитать файл, он возвращает пустую строку, хотя не должен. По неизвестной причине, файл возвращает пустой список, тоесть он пуст.

Mixeyka
() автор топика
Ответ на: комментарий от anonymous

Уважаемый anonymous, просто огромнейшее вам спасибо, разобрался и починил :)

Оказывается когда он utf конвертирует в utf - то получается байткод, бгг. Кто бы мог подумать :)))

Mixeyka
() автор топика
Ответ на: комментарий от Mixeyka

Уважаемый anonymous

Ггы

Оказывается когда он utf конвертирует в utf - то получается байткод, бгг. Кто бы мог подумать :)))
байткод

WHAT???

mittorn ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.