Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Перекодировка из win в utf |
Автор: les 6.5.2008, 22:09 | ||
Вот такой код
При прогоне через Komodo файл utf.txt создается как положено, а при консольном запуске того же файла, той же версией Perl получается пустой... Че подправить надо? Подскажите плиз... |
Автор: les 6.5.2008, 22:47 |
Лана.. всё.. добавил use Encode и в консоли тож запахало... но почему в IDE не ругался и работал.... не приятно. |
Автор: les 7.5.2008, 11:46 | ||
Вопрос такого плана... Есть ли какие органичение на использование рег.выраж с utf8??? Потому как если например в переменной $my будет строка в Юникоде, то после
Можно ли как это побороть, либо есть пути обхода этой проблемы.... |
Автор: JUmPER 7.5.2008, 16:13 | ||
|
Автор: les 7.5.2008, 19:34 | ||||||
Не, не помогло... вот это пример
в $news уходит тольео France и Presse , как это исправить? Всё тут в UTF8 и сам скрипт, и само данные... |
Автор: tolkien 7.5.2008, 20:44 |
попробуй из utf8->acsii обработать рег выражением результат из acsii->utf8 |
Автор: konstant1n 7.5.2008, 20:50 | ||
для начала, как у же сказали
далее, если мне не изменяет память, то \w это word-character для ASCII, для юникода надо использовать классы символов, вроде p{Letter} и тд. Подробнее см сюды http://www.regular-expressions.info/unicode.html И еще: судя по коду задача разбить некий текст на слова. Вы ищите последовательность букв и считаете это словом. Как насеет сокращений "т.д." , емайл адресов, слов "через-тире" и проч? Чтоб не возится с кучей исключений лучше разделять по пробелам, более точно по white-space. Все что не white-space до следующего white-space это слово. Обычно еще перед этим проходятся по тексту убирают white-space вначале/вконце текста и в самом тексте меняют мultiple white-space -> single white-space ( s/\s+/\s/g; ) |
Автор: les 7.5.2008, 21:59 | ||
Да... Спасибо, про спец символы вроде правда.... и \w будет тогда \p{IsWord} По поводу разбора.... Я привел пример такой, чтоб было видно на чем застрял.. Я текс из html выдергиваю, поэтому он проходит несколько степеней очистки. |
Автор: JUmPER 8.5.2008, 09:26 |
с директивой use utf8 \w изменяется для обработки уникода. кстати, если в коде есть не латинские буквы (я про кирилицу в рег выражении), то было бы здорово сохранить исходник в соответствующй кодировке (utf8). |
Автор: shamber 8.5.2008, 09:36 |
было бы здорово сохранить исходник в соответствующй кодировке (utf8) JUmPER, не внимательно читаете ![]() |
Автор: amg 8.5.2008, 16:02 | ||||
Что-то я засомневался, ведь, судя по документации, use utf8 должно влиять только на интерпретацию перлом текста скрипта, и решил проверить.
Вывод: документация, вроде, не врет, use utf8; не влияет на распознавание букв. Приятным сюрпризом для меня оказалось, что кириллические буквы в юникоде подходят \w даже без use locale. Хотя сейчас вспомнил, что об этом уже говорилось здесь. Чтобы работать со строками в предсавлении UTF8, их сначала нужно декодировать. |