我在文本文件(.txt)中有以下文字:
FestebendründendieIdentitätinerGemeinschaft und ihr Selbstverständnisnachinnen。 Eng damit verbunden sind Emotionen,die zunächstimZusammenhang miteinergefühltenZugehörigkeitzueiner Fest-Gemeinschaft zu verstehen sind。 Mit jedem Fest verbindet sich 与众不同的情况:All bestimmende festliche Eindruck - 死于狂热Gestimmtheit - ist der einer erhöhtenBedeutungshaftigkeitdes Lebens,durch die sich das Festliche aus dem Lauf des Alltagslebens hervorhebt unddessenWirkmächtigkeit zuvörderstanhandder AnalyzedesbürgerlichenGeburtstagessinnfällig demonstriert werden soll。
当我从.txt文件中读取此文本时,我收到的文字如下所示:
FestebendründendieIdentitätinerGemeinschaft und ihr Selbstverständnisnachinnen。 Eng damit verbunden sind Emotionen,die zunächstimZusammenhang miteinergefühltenZugehörigkeitzueiner Fest-Gemeinschaft zu verstehen sind。 Mit jedem Fest verbindet sich 与众不同的情况:All bestimmende festliche Eindruck die feierliche Gestimmtheit ist der einer erhöhtenBedeutungshaftigkeitdes Lebens,durch die sich das Festliche aus dem Lauf des Alltagslebens hervorhebt unddessenWirkmächtigkeit zuvörderstanhandder AnalyzedesbürgerlichenGeburtstagessinnfällig demonstriert werden soll。
你可以看到上面文本中没有出现的短划线,但是我想要(.txt)文件中的确切文本,我也使用了UTF-8但仍然没有使用短划线。
我正在寻找你的想法,以便在Perl中解决这个问题。
答案 0 :(得分:0)
尝试像这样开始你的脚本:
#!/usr/bin/perl -CS
use open IO => ':utf8';
然后正常打开,读取和输出,该pragma将指示Perl对所有输入和输出使用UTF8编码,选项-CS
将为STDIN
启用Unicode支持,{{1 }和STDOUT
。
您需要通过以下方式之一运行脚本:
STDERR
运行它,或./script.pl
参考:
perlrun
open
use utf8 gives me 'Wide character in print'
此脚本应该能够创建this file的精确副本(使用perl -CS /path/to/script.pl
进行检查)。当它运行时,diff
的值应为7,它会将此变量的值打印到${^UNICODE}
。
STDERR
答案 1 :(得分:0)
Perl处理你的变音符号而不是破折号的事实表明该文件使用windows-1252
编码。 Perl可能假设该文件位于latin-1
(ISO-8859-1),这是一种在80
和9F
之间不使用代码点的编码。 97
中的N短划线windows-1252
可以解释为什么Perl不会处理它。
尝试告诉Perl使用windows-1252
文件和终端,the open pragma:
use open qw( :encoding(windows-1252) :std );