gpt4 book ai didi

perl - 为什么 perl 不能显示所有类型的 UTF8 字符

转载 作者:行者123 更新时间:2023-12-02 08:31:29 25 4
gpt4 key购买 nike

我正在使用我制作的 perl 脚本来处理 IPA 字符(国际音标)。我使用 UTF8 编码,我的 perl 文件和标准输入/输出如下:

#!/usr/local/bin/perl
use utf8;

binmode(STDOUT, ":utf8"); #treat as if it is UTF-8
binmode(STDIN, ":encoding(utf8)"); #actually check if it is UTF-8

但是当我运行这个小测试时:

my %IPAchar = (
"69" => "i", "65" => "e", "25b" => "ɛ", "" => "ɛ̃",
"" => "œ̃", "153" => "œ", "259" => "ə", "f8" => "ø",
"79" => "y", "75" => "u", "6f" => "o", "254" => "ɔ",
"" => "ɔ̃", "e3" => "ɑ̃", "251" => "ɑ", "61" => "a",
"6a" => "j", "265" => "ɥ", "77" => "w", "6e" => "n",
"272" => "ɲ", "14b" => "ŋ", "261" => "ɡ", "6b" => "k",
"6d" => "m", "62" => "b", "70" => "p", "76" => "v",
"66" => "f", "64" => "d", "74" => "t", "292" => "ʒ",
"283" => "ʃ", "7a" => "z", "73" => "s", "281" => "ʁ",
"6c" => "l", "" => "h", "294" => "ʔ", "2e" => ".",
"280" => "ʀ", "1dd" => "ǝ", "72" => "r", "3b5" => "ε",
"67" => "g", "25c" => "ɜ", "2d0" => "ː", "2c8" => "ˈ",
"2b0" => "ʰ", "26a" => "ɪ"
);

foreach my $k ( sort keys(%IPAchar) ) {
print "\n[$k] /$IPAchar{$k}/";
}

所有字符都没有正确打印。这很奇怪,因为字符“ä”或“ø”或“ε”正确显示,但我无法使其他特定字符工作,例如“ʃ”,“ɜ”,......

如果有人能提供帮助,我将不胜感激!!!

感谢阅读,

西蒙

最佳答案

您是在控制台还是在编辑器中查看程序的输出?

即使您的程序为您想要的符号生成了正确的字符代码,您也必须使用支持这些符号的字体来显示文本;否则显示将没有意义。

使用浏览器打开文本文件可能很有用,因为网络浏览器必须适应几乎所有官方编码,并且通常能够正确呈现文件的内容。

快速搜索发现this list支持 IP 符号的字体。如果您使用其中之一,那么您应该能够正确地看到您的输出。

我强烈推荐 GNU Unifont ,它对我所知道的任何字体的 Unicode 字符集都有最好的覆盖。这是一种无衬线字体。


更新

令我担心的是你对 %IPAchar 的定义hash 有多个键设置为 nullempty 字符串 "" .这是一个完全有效的散列键,但散列的性质意味着您可以只有一个元素作为键。正式地,散列元素的值$IPAchar{''}在这种情况下是未定义的。实际上,它将被设置为列表中具有相同键的 last 值,因此在您的情况下为 $IPAchar{''} = 'h' .

关于perl - 为什么 perl 不能显示所有类型的 UTF8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26345068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com