回答編集履歴

1

補足

2022/12/05 08:05

投稿

KojiDoi
KojiDoi

スコア13671

test CHANGED
@@ -3,3 +3,22 @@
3
3
  ここをみて原則通りにやってみてください。
4
4
  現状では、入力データのデコード、出力データのエンコード、ともにできていないでしょう。あらゆる処理はデコードされたデータに対してしか試みてはいけません。
5
5
 
6
+ 最低限のコードを書いておきます。
7
+ * データは読み込むと同時にデコードする。
8
+ * データは書き込む寸前にエンコードする。
9
+ * いま扱おうとしているデータがデコードされているのか居ないのか常に意識する。
10
+ * あらゆる処理はデコードされたデータについてのみ行う。
11
+ * あやふやな認識のまま試行錯誤をしない。
12
+ * **巷にあふれるいい加減な解説は信用しない**。
13
+
14
+ ```
15
+ use strict;
16
+ use warnings;
17
+ use utf8;
18
+
19
+ open(my $fhi, '<encoding(cp932)', "input.sjis.txt") or die; # 読み込みながらdecode
20
+ open(my $fho, '>:utf8', "output.utf8.out"); # 書き出す時にencode
21
+ while(<$fhi>){
22
+ /東京/ and print {$fho} $_;
23
+ }
24
+ ```