Page 2 of 2

Posted: Mon Dec 21, 2009 3:28 pm
by Instructor
VladSh
Формат символа новой строки. Меняется через "Главное меню->Правка->Формат новой строки", либо двойным кликом по этому месту в строке статуса.

Posted: Mon Dec 21, 2009 5:55 pm
by Infocatcher
VladSh wrote:А что тогда означает надпись Unix чуть левее?
http://ru.wikipedia.org/wiki/CR_LF, управляющие символы
CR LF – \r\n – Windows
LF – \n – Unix
CR – \r – Mac

Posted: Wed Jan 13, 2010 10:42 am
by VladSh
Infocatcher, я как раз не знал, что такое "Формат символа новой строки", я думал это "ANSI" и т.п., а это оказалось формат управляющих символов.
Спасибо за доки, - это то, что нужно! 8)

Posted: Sat Jan 30, 2010 6:38 am
by Крепыш
Пишу скрипт JScript для обработки текстовых файлов. В основном они в кодировке ANSI, но иногда попадаются и в UNICODE. Для проверки на UNICODE использую такую онструкцию:

Code: Select all

var FileIn = objFileIn.OpenAsTextStream(1);                                  //Открываем 1-й файл, по умолчанию он открывается в ANSI
var Text = FileIn.ReadLine();                                                     //Читаем первую строку
                                                                                  //Проверяем первые два байта
if ((Symbol = Text.substr(0, 2)) != '\u044f\u044e' && Symbol != '\u044e\u044f')   //Считаем, что кодировка ANSI
  var FileOut = FSO.CreateTextFile(FileNameOut)                                   //Создаём новый файл (по умолчанию в ANSI)
else                                                                              //Иначе, считаем, что кодировка UNICODE
{
  FileIn.Close();                                                                 //Закрываем 1-й файл
  FileIn = objFileIn.OpenAsTextStream(1, -1);                                     //И открываем в UNICODE
  var FileOut = FSO.CreateTextFile(FileNameOut, true, true);                      //Создаём 2-й файл в UNICODE
         Text = FileIn.ReadLine()
}
Поправьте, пожалуйста, если что не так. Меня интересует правильность проверки на UNICODE:

Code: Select all

if ((Symbol = Text.substr(0, 2)) != '\u044f\u044e' && Symbol != '\u044e\u044f')
Также иногда попадаются нетекстовые файлы. Как проверить их на бинарность, чтобы исключить из обработки?

Posted: Wed Feb 03, 2010 10:43 am
by Fr0sT
Крепыш
то, что ты проверяешь - это BOM, которого вполне может и не быть. В общем случае юникодный файл можно определить по допустимым значениям (не все байты могут быть частью юникодного символа, см. вики). Если юникодный файл содержит только текст латиницей, тогда каждый четный (или нечетный, в зависимости от Big/Little endian) байт будет нулевым.
Бинарность определяется по наличию нетекстовых символов, но тоже лишь с долей вероятности.

Апд. Если в файле точно наличествует перевод строки, можно привязаться к нему: он будет 0xD в анси и 0x0 0xD в юникоде. Если же переводы строки только в формате виндов (0xD 0xA), то надёжность определения ещё больше повышается.

проблема - с кодировками.

Posted: Fri Feb 19, 2010 4:59 am
by Genn
И еще одна проблема - с кодировками.
Во-первых с автораспознаванием кодировок.
По сути так и не решена. Например в блокноте открываешь файл с юникодами, и он всегда нормально их отображает. Акель же вместо них часто пишет что-то совсем иное.
И кроме того не хватает возможности переключать ввод в нужную кодировку.
К примеру создаю файл и хочу писать в нем юникодовые символы, но ничего не выходит. :( Не помогает и установка "кодировка по умолчанию".
Явно не хватает непосредственной возможности переключения, как встречал у некоторых редакторов.

Posted: Fri Feb 19, 2010 6:24 am
by Instructor
Genn
Выбираем Unicode шрифт, например, "Courier New".

Posted: Mon Feb 22, 2010 4:29 am
by Genn
Instructor
Действительно, так получается. Причем обнаружил странную вещь, из-за которой пришлось дополнительно глянуть некоторые шрифты в редакторе шрифтов. Так например из двух одинаковых на первый взгляд, шрифт Tahoma оказался содержащим намного больше , а возможно и все кодовые страницы, шрифт же Verdana, хотя и содержащим несколько кодовых страниц, но явно намного меньше, т.е. в большинстве случаев не юникодовским.
Но тем не менее, остался пока что один непонятный момент.
Если создавать в блокноте файл и сохранять "как юникод", AkelPad с ним работает нормально.
Если же в блокноте сохранить "как UTF-8", AkelPad не может его прочесть, причем указывает в строке статуса в качестве страницы почему-то Win и UTF-16(?).
Аналогично не читает нормально кириллицу в xml-файлах, созданных в UTF-8, определяя кодовую страницу Unix и 1251.
Блокнот же эти файлы распознает вполне нормально.

Posted: Mon Feb 22, 2010 4:38 am
by Instructor
Genn
Ознакамливаемся с FAQ, если проблему не решается, то называем версию AkelPad'а и скидываем файл на почту, который AkelPad не корректно открывает.