問題#1:あなたがのための出力をエンコードするためにPerlを指示する必要がありますあなたの端末。
プログラムに以下を追加します。
use Win32 qw();
use open ':std', ':encoding(cp'.Win32::GetConsoleOutputCP().')';
use utf8;
は、単にそのソースファイルではなく、ASCIIのUTF-8を使用してエンコードされて指定します。
問題#2:あなたの端末はおそらくその文字を処理できません。
米国英語のコンソールのコンソールは、おそらくcp437と思われます。文字セットには点字は含まれていません。
chcp 65001
を使用してコードページ65001(UTF-8)に切り替えることができます。また、コンソールのフォントを点字を含むフォントに切り替える必要があるかもしれません。 (それはバックスラッシュに奇妙なことを行いますが、MSゴシックは、私のために働いた。)
問題#3:あなたは間違った文字コードを持っています。
U+0AF1 GUJARATI RUPEE SIGN
(&#x0AF1):"\x{AF1}"
又は"\N{U+0AF1}"
又はchr(2801)
U+0B41 ORIYA VOWEL SIGN U
(&#x0B41):"\x{B41}"
又は"\N{U+0B41}"
又はchr(2881)
U+2801 BRAILLE PATTERN DOTS-1
(&#をx2801;):"\x{2801}"
又は"\N{U+2801}"
又はchr(10241)
U+2881 BRAILLE PATTERN DOTS-18
(⢁):"\x{2881}"
または"\N{U+2881}"
または すべて一緒に
、
use strict;
use warnings;
use feature qw(say);
use Win32 qw();
use open ':std', ':encoding(cp'.Win32::GetConsoleOutputCP().')';
say(chr($_)) for 0x2801, 0x2881;
は出力:
>chcp 65001
Active code page: 65001
>perl a.pl
⠁
⢁
https://stackoverflow.com/questions/627661/how-can-i-output-を見てくださいutf-8-per-perl – mttrb
binmode(STDOUT、 ":utf8")を使用したその特定の修正。出力をフォーマットし、警告を抑制しますが、1の代わりに3を出力します。私のバージョンのperlかもしれないと思いますか?私はこの問題を他の場所で見つけることはできないようです。 – Liz
あなたのコンソールはUTF-8: 'chcp 65001'を期待する必要があります。 –