Nokia Internet Tablet N8XX     

Ответы на вопросы о таблетках

  • Вы не зашли.

#1 16-11-2007 01:50:11

scr  
Таблеточник
Откуда: Санкт-Петербург
На форуме с: 02-10-2007
Сообщений: 4
Отблагодарили :   
 

Русские имена директорий и Python

Добрый день.
Обнаружил странное, которое скорее всего связано с моим непониманием внутреннего устройства операционной системы. Необходимо создавать директории, содержащие русские символы. Имена папок изначально в кодировке UNICODE.

В Питоне есть функция определения кодировки файловой системы,

Код:

sys.getfilesystemencoding()

Данная функция возвращает различный результат, если запускать интерпретатор Питона под обычным пользователем - UTF-8 и под root, через команду sudo gainroot  - ANSI_X3.4-1968.

При этом Python пытается честно перекодировать переданную уникодовую строку в кодировку файловой системы и в итоге падает с сообщением UnicodeEncodeError. Происходит это только под root и не только при попытке создания файла, а даже при выводе на экран. Забавно, что если команде создания папки (или print) передать строку, уже перекодированную в UTF-8:

Код:

os.mkdir(newdir.encode("UTF-8"))

то это работает как под рутом, так и под обычным пользователем, но теряет портабельность. Вопрос - это настройки BusyBox или не лечится никак? И почему настройки шелла влияют на определение кодировки файлов? Переменные окружения под рутом смотрел - никаких намёков на ANSI_X3.4-1968 не нашёл.

Неактивен

 

#2 16-11-2007 02:00:11

gLobster  
TabletGeek
Откуда: Санкт-Петербург
На форуме с: 27-08-2007
Сообщений: 1240
Вебсайт
 

Re: Русские имена директорий и Python

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


c приветом, gLobster
Nokia's E90|N810|6151 + TomTom 920T

Неактивен

 

#3 19-11-2007 01:57:44

scr  
Таблеточник
Откуда: Санкт-Петербург
На форуме с: 02-10-2007
Сообщений: 4
Отблагодарили :   
 

Re: Русские имена директорий и Python

Не хочу разжигать холивары, но по сути не согласен. В эпоху повсеместного использования уникода (к файловой системе Maemo, к сожалению, не относится) - это мнение, IMHO, устаревшее. Странно, если сущности, которыми оперирует пользователь, называются по-русски, складываются в одноимённые директории, но названия этих папок должны быть не по-русски. Да, я думал о переводе в транслит, но как-то это неспортивно. Слишком по-юниксоидному. Просто надо научиться правильно их (русские буквы) готовить.

Неактивен

 

#4 19-11-2007 02:14:57

gLobster  
TabletGeek
Откуда: Санкт-Петербург
На форуме с: 27-08-2007
Сообщений: 1240
Вебсайт
 

Re: Русские имена директорий и Python

Хохма в том, что юникод в FAT - сбоку припёку. И поэтому он и становится источником ошибок. Конечно здесь шансов меньше, но всё же. Вполне чересчур умная "поправлялка FAT" легко прибьёт кириицу, особенно юникодовую. Ведь вопрос не в маемовской файловой системе, а в чисто микрософтовской FAT32 на какрточке, которая по определению для Unix чужая.


c приветом, gLobster
Nokia's E90|N810|6151 + TomTom 920T

Неактивен

 

#5 19-11-2007 02:20:54

scr  
Таблеточник
Откуда: Санкт-Петербург
На форуме с: 02-10-2007
Сообщений: 4
Отблагодарили :   
 

Re: Русские имена директорий и Python

А-а-а, вот где собака порылась. Как-то я забыл, что на карточке у нас FAT32. Тогда понятно, почему определение кодировки работает криво. Сделал опцию которая, будучи указана в конфиге, устанавливает кодировку принудительно и на этом успокоился.

Неактивен

 

Board footer

Powered by PunBB
© Copyright 2002-2008 Rickard Andersson

Использованы иконки браузеров с форума forum.mozilla-russia.org

[ Generated in 0.491 seconds, 6 queries executed ]