我有一个包含以下文字的文件:
óó
é
ó
óóó
我希望能够读取这些字符并在perl中操作它们。
事实上,我想使用诸如s /ó/ o / g之类的陈述;等等。
当我为具有上述文本的文件键入文件-i file.txt时,我得到的文件是“常规文件”。所以我认为这意味着我不需要特别注意在perl中处理这个文件。但是,只是阅读文件并吐出我读过的内容会给出问号。显然有些东西丢失了。
我在perl脚本的开头尝试了'use bytes',但这没有帮助。
我是如何在perl中读取此文件并以上述方式操作它的任何想法?
顺便说一下,该文件的xxd转储包含例如:
c3b3c3b30ac3a90ac3b30ac3b3c3b3c3b30ac3b30ac3b3c3b3c3b30ac3b3
如果有人需要恢复它使用的确切字符。
答案 0 :(得分:1)
您使用的是什么版本的Perl以及在哪个平台或操作系统上?如果您在整个中使用unicode(您的终端或控制台字体,locale
设置,文件编码等),这应该是简单的操作。)
我使用vim
将上述文本复制到我在Xterminal中创建的文件中:
~/$ file -i utf8.txt
utf8.txt: text/plain; charset=utf-8
~$/ xxd -p utf8.txttext
c3b3c3b30ac3a90ac3b30ac3b3c3b3c3b30a
~/$ perl -npE 's/ó/o/g; s/é/ë/g' utf8.txt
oo
ë
o
ooo
我还使用xxd -r -p
从上面包含的转储字符串创建文件(与您帖子中显示的不同)。结果是一样的:perl
没有重音问题。
也许您的问题是由您环境的文本和编码设置引起的。如果您的locale
设置,您用于终端的字体或文件的编码在某种程度上不一致,则最终可能会显示不正确的文字。
perlunicode
的perldoc
文档和教程perlunitut
如果您想更全面地了解相关内容,请参阅必要的详细信息,但我建议您查看LOCALE
}设置等开始。