0
Я стараюсь иметь специальные символы немецкого языка: öäüßÖÄÜ на выходе приложения ma perl console, но я не смог. Это немецкая система win7 с активной кодовой страницы 850.perl special char windows
#!/usr/bin/perl
use warnings;
use strict;
binmode(STDOUT , ":encoding(cp437)") if $^O eq 'MSWin32';
#binmode(STDOUT , ":encoding(cp850)") if $^O eq 'MSWin32';
#binmode(STDOUT , ":encoding(cp1252)") if $^O eq 'MSWin32';
my @sp_chars = qw/ä ö ü ß Ä Ö Ü/;
foreach my $sp_char (@sp_chars) {
print "$sp_char\n";
}
Я получаю ошибки как:
"\x{009f}" does not map to cp1252 at umlaute.pl line 12.
"\x{009f}" does not map to cp850 at umlaute.pl line 12.
"\x{00c3}" does not map to cp437 at umlaute.pl line 12.
Как я могу получить выход Проппер?
Привет Бен, «пришедший из исходного кода» был намеком я необходимо. Я пропустил суть, что блокнот ++ был установлен в utf8. Большое спасибо! Pete – Pete
@Pete: Правильное решение состоит в том, чтобы * сказать * Perl, что источник находится в UTF-8, добавив 'use utf8' в качестве первого оператора в исходном файле. Сейчас необычно использовать кодовую страницу 850 (DOS Latin 1), поскольку ISO-8859-1 (кодовая страница 1252, кроме нескольких мелочей) в значительной степени заменил ее. Возможно, вам проще использовать UTF-8 повсюду, что поддерживается с помощью кодовой страницы Windows 65001. – Borodin
Правильно, если вы намерены использовать слой кодирования в любом месте своей программы, ваши данные должны быть последовательно представлены. Обычно _easier_ обрабатывать все как байты, поэтому я обычно не включаю utf8, даже когда у меня есть utf8-символы в источнике. Но я обновлю ответ, потому что это более современный способ сделать это :) –