如何从外部文件读取特殊字符?这是一个简单的法语
.txt
文件,内容是https://fr.lipsum.com/的第一段:正如你在我的截图中看到的,文件编码是UTF-8,但重音符号不是显示正确。
我在记事本++和我的Raku脚本中尝试了各种编码,如下所示:
enc => "utf8"
enc => "latin1"
使用 Python 或 Ruby 脚本我不会遇到这个问题。我找不到任何关于此事的精确例子,可能是因为 Raku 还很新(??)。谢谢你。
屏幕截图中显示的我的脚本:
my $text_contents = slurp "testfile.txt", enc => "utf8";
say $text_contents;
prompt;
最终编辑:解决方案是启用一个选项(在 Windows 10 1803 的测试版状态下可用),以使操作系统正确处理 unicode 字符:请参阅下面的答案和评论...
这个SO要么完全或几乎完全与你无关。
选中“测试版:使用 Unicode UTF-8 获得全球语言支持”选项复选框。
至少在我最初写这个答案时,此 Unicode 相关复选框附近的文本声称它适用于不支持 Unicode 的程序,但您应该忽略它。[1]
在我最初写这个答案时,该复选框位于控制面板、“区域”条目、“管理”选项卡、“更改系统区域设置”按钮下。
自从我写下这个答案以来,微软可能已经改变了这个东西,并且可能会再次改变它,例如通过移动和/或重命名复选框,或者使事情比仅仅单击单个复选框更复杂。
根据他们在这个答案下面的评论,OP 指出:
对于那些对该特定选项感兴趣的人,可以在 Windows 的“旧版”控制面板 -> 区域 -> 管理 -> 编辑设置中找到它...
可以说,好消息是 Raku 和 Rakudo 拥有一些世界上最好的现代对 Unicode 的支持,好消息是它依赖于 Microsoft 正确支持 Unicode,而他们现在正在努力做到这一点。
坏消息是他们在旧版本的 Windows 中犯了很多错误(甚至在 Windows 10 中,他们现在正在尝试修复),因此任何解决方案都将受到这些错误的限制。 (也许最大的问题是微软在这个话题上的双重言论[1],但希望我们能解决这个问题。)
综上所述,请阅读以下内容,然后返回寻找解决方案或发布新的问题,我们会尽力提供帮助。
引用维基百科页面Microsoft Windows 中的 Unicode:
他们仍在 2018 年改进操作系统对 UTF-8 的支持
微软上个世纪在 Unicode 支持方面出了差错。好消息是,他们终于开始从为自己和其他人挖的坑里挖出一条路来。
但是它们肯定还没有出现——在最初写这个答案的时候还没有,而且,我怀疑再过 N 年也不会——至少因为对于许多最终用户来说,开箱即用的东西还不能正常工作。 。我认为这是 Windows 上 Unicode 的大多数问题的根源。
Python、Ruby 和 Perl 等较旧的语言提出了一系列 hack,通过使用 Microsoft 讽刺地描述的“Unicode 支持”,在简单的场景中向大多数用户隐藏了 Microsoft 较旧的 UTF8 支持的许多问题。
这总是伴随着一种权衡,即对于世界各地许多地区的更复杂的应用程序来说,事情会变得“非常”复杂,甚至完全无法工作。 (以至于连强大的微软也终于在 2018 年屈服了。) 本质上,直到 Microsoft 做出新的努力来使用该程序,在 Windows 上运行的软件别无选择,只能使用根本上被破坏的“Unicode 支持”,或者真正正确地支持 Unicode。
[1] Raku 和 Rakudo 专注于后者,在 Windows 上运行时出现的问题与微软旧的破碎方法相冲突有关。幸运的是,微软现在正在使用该程序,因此我们也许能够找到一种方法来解决您在 Windows 上使用 Unicode 时遇到的问题
只要您有耐心。 特别是,如果您使用的是较旧的 Windows 版本,请预期它首先无法
与现代 Unicode 识别软件一起工作,除非您很幸运。如果可以的话,我们仍然会提供帮助,但这可能需要您对我们、Microsoft 和 Rakudo 保持耐心,反之亦然。 脚注
[1]在我最初写这个答案时,复选框附近有文字表明它适用于不支持 Unicode 的程序。这与实际情况完全相反,但是嘿,这是微软。