use*_*552 2 perl encoding utf-8 ipa
我正在扼杀我制作的perl脚本,它应该处理IPA字符(国际音标).我使用UTF8编码,我的perl文件和std输入/输出如下:
#!/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
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个小测试时:
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}/";
}
Run Code Online (Sandbox Code Playgroud)
所有字符都打印不正确.这很奇怪,因为字符"ä"或"ø"或"ε"正确显示,但我无法设法使其他特定字符工作,例如"ʃ","ɜ",....
如果有人可以帮助我真的很感激!!!
谢谢阅读,
西蒙
您是在控制台上还是在编辑器中查看程序的输出?
即使您的程序为您想要的符号生成正确的字符代码,您也必须使用支持这些符号的字体来显示文本; 否则显示器没有意义.
使用浏览器打开文本文件会很有用,因为Web浏览器必须适应几乎任何官方编码,并且通常能够正确地呈现文件的内容.
快速搜索找到了支持IP符号的字体列表.如果您使用其中一个,那么您应该能够正确地看到您的输出.
我强烈推荐GNU Unifont
,它具有我所知道的任何字体的Unicode字符集的最佳覆盖范围.它是一种无衬线字体.
更新
它让我担心你的%IPAchar
哈希定义有多个键设置为null或空字符串""
.它是一个完全有效的散列键,但散列的本质意味着你只能有一个元素作为键.正式地说,$IPAchar{''}
在这种情况下,哈希元素的值是未定义的.实际上,它将被设置为列表中具有相同键的最后一个值,因此在您的情况下$IPAchar{''} = 'h'
.