>[оверквотинг удален] > $bytes = encode('utf-8', $string); # в байты, (из внутреннего формата) > $string = decode('utf-8', $bytes); # преобразовать во внутренний формат > ! ВАЖНО, если perl собран и операционная система настроена так, что внутреннее > представление переменных в utf-8 и print'ы и прочее выводят в utf-8, > то это не значит что не надо пропускать через decode( 'utf-8', > ... ), строки пришедшие откуда-то (из socket'а или fcgi, или модуля > какого-нибудь и т.п.) то что строка в utf-8 еще не значит > что она во внутреннем формате. > При работе с файлами можно использовать специальный синтаксис при открытии: > open FH, "<:utf8", $filename; # подробнее "perldoc -f open" Мне странно читать подобные недовольсва... некоторые абсолютно уверены, что это какая-то ошибка и потому не рабоате! Нет граждане непонимающие это не ошибка... И оно не должно работать Просто потому что всё это работает через ctype функции... А они не работают с мультибайтовыми кодировками! Ещё более странно даже не это, а то, что люди с таким упрорством пытаются использовать самую неудобную и самую тормознутую из всех кодировок utf8... Я не знаю ни одного приложения где такая кодировка действительно нужна. За исключением разве что языков с очень большим числом иероглифов как в китайском... Но мы же не китайцы!!! В большинстве приложений хватает ASCII кодировок и это разумно использовать именно их! Но если вам не хватает симоволв или надо одновременно более 2-х языков сразу(в вебе к примеру...) то используйте вы Unicode. Это на порядок проще и быстрее!!! И там всё рабоатет. Функции другие, н отак всё тоже самое... Открою вам секрет, UTF8 это не ASCII кодировка и не Unicode.. Это мудьтибайтовая кодировка... И отсюда все беды! Никогда её не используйте и у вас не будет проблем. Перекодировать строку из utf8 в любую другую очень прсото с помощью стандартной функции iconv.
|