Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Запись в файл по-русски


Автор: Vahgo 19.2.2007, 22:25
Хочу записать в файл слова русскими буквами. Написал подпрограмму (слова передаются в неё)
Код

sub text 
{
open(TEXT,">:encoding(cp1251)","text.txt") || die;
foreach (@_) {
print TEXT "$_"; 
}
print TEXT "\n";
close (TEXT);
}
1;

которая должна вроде как все это сделать... Но передав в неё, скажем, слово "Привет", в файле text.txt получаю:
&# 1055;&# 1088;&# 1080;&# 1074;&# 1077;&# 1090; (тока без пробелов, переводится в "Привет", почему-то)
что, разумеется, прочитать сходу трудно. Я понимаю, что это какое-то кодирование и имеет смысл, но все-таки, как его перевести в читабельный вид? В основном скрипте (из которого как раз вызываю эту подпрограмму) прописано use Encode; и кодировка windows-1251, но толку никакого... Заранее спасибо за помощь.

Автор: korob2001 20.2.2007, 00:42
Попробуй так:
Код

#!/usr/bin/perl -w
use strict;

sub text {
    open my $fh, ">", "text.txt" or die $!;
         print $fh join("\n", @_) . "\n";
    close $fh;
}

&text("Привет!","Это просто тестовое сообщение.","Пока...");

Автор: Vahgo 20.2.2007, 01:15
Да, получилось. Спасибо. Я так понял, указывать кодировку было лишним?

Автор: korob2001 20.2.2007, 01:28
Мне никогда ещё не приходилось этого делать.

Автор: tishaishii 22.2.2007, 21:35
Нечего по-пусту заморачиваться.
Обычно, всё просто.

Добавлено @ 21:37 
Нечего по-пусту заморачиваться.
Обычно, всё просто.
Код
open(TEXT,">:encoding(cp1251)","text.txt") || die;

А какая кодировка в локали?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)