Проблема кодирования при разборе CSS? - PullRequest
0 голосов
/ 12 августа 2011

Я пытаюсь проанализировать некоторые CSS-файлы, используя анализатор проекта кода, найденный здесь .В основном мне нужно взять файл css из ftp, превратить его в строку, разобрать, чтобы я мог перечислить классы css.При использовании стандартного FTP-клиента .net возвращаемая строка корректно работает с анализатором.Используя анализатор ftp, который мы используем в нашем проекте, он терпит неудачу (CuteFTP).Здесь вещи становятся странными.Из того, что я смог сказать, два файла CSS, возвращенные как строки, идентичны, они происходят из одного и того же файла CSS.Так почему один из них работает, а другой не работает, есть ли скрытое форматирование?Я подтвердил, что оба ftp-клиента используют кодировку utf8.Вот два класса CSS, возвращаемых в виде строк.Я загрузил проект vs2010, показывающий проблему здесь .Любая помощь будет принята с благодарностью ... это одна из проблем, которая заставляет меня чесать голову.Спасибо

string cssThatWorks = "\r\n.uploadfiles_button{\r\n    color:#529214; \r\nborder:1px solid #C6D880;\r\ndisplay:inline-block;\r\n    margin:0 7px 0 0;\r\n    font-family:\"Lucida Grande\", Tahoma, Arial, Verdana, sans-serif;\r\n    font-size:12px;\r\n    line-height:130%;\r\n    text-decoration:none;\r\n    font-weight:bold;\r\n    cursor:pointer;\r\n    padding:5px 10px 6px 7px; \r\n}\r\n\r\n\r\n\r\n";

string cssThatFails = "\r\n.uploadfiles_button{\r\n    color:#529214; \r\nborder:1px solid #C6D880;\r\ndisplay:inline-block;\r\n    margin:0 7px 0 0;\r\n    font-family:\"Lucida Grande\", Tahoma, Arial, Verdana, sans-serif;\r\n    font-size:12px;\r\n    line-height:130%;\r\n    text-decoration:none;\r\n    font-weight:bold;\r\n    cursor:pointer;\r\n    padding:5px 10px 6px 7px; \r\n}\r\n\r\n\r\n\r\n";

Обновление

Похоже, что есть идентификатор UTF8 в начале строки, поэтому я добавил следующий код, который должен удалить его.Истина, переданная конструктору, должна его пропустить, но это не так.Есть идеи?

  UTF8Encoding utf8 = new UTF8Encoding(true);
  Byte[] encodedBytes = utf8.GetBytes(cssThatFails);
  string cssWithoutUTF8Identifier = utf8.GetString(encodedBytes);

1 Ответ

1 голос
/ 12 августа 2011

Я открыл файл Default.aspx.cs из вашего примера проекта в TextPad и увидел '?'символ в начале строки "cssThatFails", указывающий неизвестный символ.Поэтому я открыл этот же файл в бинарном редакторе VS и заметил, что строка «cssThatFails» имеет маркер порядка байтов UTF-8 в начале (0xEFBBBF).Это вероятный виновник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...