如何从外部文件中读取特殊字符?这里有一个简单的法语.txt
文件,其内容是https://fr.lipsum.com/的第一段:正如你在我的截图中看到的那样,文件编码是UTF-8但是重音没有正确显示。
我在notepad ++和perl6脚本中尝试了各种编码,如下所示:
enc => "utf8"
enc => "latin1"
使用Python或Ruby脚本我不会遇到问题。我无法找到关于这个问题的任何确切的例子,可能是因为perl 6仍然是最近的(??)。谢谢。
我的脚本显示在屏幕截图中:
my $text_contents = slurp "testfile.txt", enc => "utf8";
say $text_contents;
prompt;
最终编辑:解决方案是启用一个在Windows 10 1803处于测试状态的选项,以使操作系统正确处理unicode字符:请参阅下面的答案和评论......
TL; DR如果您使用的是Windows 10,则可能只需要在控制面板中单击右侧选项即可。如果您使用的是旧版本,请告诉我们您使用的是哪个版本,我们将从那里开始使用。
您的问题似乎是控制台输出编码不是utf8和/或字体是ANSI。
您正在使用Microsoft Windows,可能是Windows 10.这个答案假定这是您的根本问题,解决方案归结为:
引用维基百科的页面Unicode in Microsoft Windows:
他们仍然在2018年改进了对UTF-8的操作系统支持
在过去的几十年中,他们在Unicode支持下走错了路。他们刚刚开始挖掘他们为自己和其他人挖洞的方法。但他们还没有,至少因为对于许多最终用户来说,事情并没有正确地开箱即用。我认为这是你问题的根源。
像Python,Ruby和经典Perl系列这样的老语言提出了一系列令人费解的黑客攻击,这些黑客在简单的场景中隐藏了大多数用户对Microsoft的旧版UTF8支持的许多问题。 (在世界各地的许多地方,除了简单的应用之外,事情变得非常繁琐甚至完全不可行。所以即便是强大的微软最终在2018年投降了。)
与微软重新努力做正确的事情相比,为Rakudo添加复杂的解决方案是一个不太重要的事情。
所以这就是我的建议:
毫无疑问,随着时间的推移,随着时间的推移,随着时间的推移,Rakudo会逐渐增加实际的解决方法,并且将P6编写为默认值的新的Unicode优势阶段。微软可能会让他们的技术更容易使用Unicode做正确的事情。但是现在解决方案归结为在Windows中选择正确的选项,看起来你还没有这样做。