師匠の散歩

きままにPerlでも

eucで記述

漢字コード違いでの挙動を確認する/ subjcode-euc.cgi

文字コード「EUC-JP」で記述すれば、途中、Shift_JIS変換したデータも、文字化けしない。

before number = 1
  1. 1st aiueo kakikukeko 2nd ABCDE EFGHI 3rd 12345 67890 4th 漢字コード:EUC-JP 5th 表示
after number = 5
  1. 1st aiueo kakikukeko
  2. 2nd ABCDE EFGHI
  3. 3rd 12345 67890
  4. 4th 漢字コード:EUC-JP
  5. 5th 表示

script

# ---------------------------
# 漢字コードの不思議
# ヘッダー・フッターの部分は省略
# ---------------------------
# データセット
  my $data =<<"_HTML_";
1st aiueo kakikukeko
2nd ABCDE EFGHI
3rd 12345 67890
4th 漢字コード:EUC-JP                 # ソースで異なるのは、記述する漢字コード+改行コードのみ
5th 表示                               # 文字化け漢字の代表
_HTML_

  my @file;
  my $line;
  my $num = @file;                     # @file の行数
  push (@file,$data) ;
  print "before number = $num\n";
  foreach (@file){
    print "<li>$_\\n";
  }
  

  @file=();                            # 元々は、この4行の操作をしたかった
  while ($data =~ /\\n/) {             # 改行コードがあれば
    push (@file, $`);                  # 一番左のマッチした前半を配列に入れる
    $data = $';                        # マッチした後半を対象にする
  }

  $num = @file;                        # @fileの行数
  print "after number = $num\\n";
  
  foreach (@file){
   print "<li>$_\\n";
  }
  
  my $writefile="./result/data.txt";
  open (OUT,">$writefile") || &error('open error',$writefile);
    print OUT (@file);
  close (OUT);

  $writefile="./result/data2.txt";
  foreach (@file) {
    $_ = jcode($_)->h2z->sjis;         # Shift_JISに変換して保存
  }
  open (OUT,">$writefile") || &error('open error',$writefile);
    print OUT (@file);
  close (OUT);

  $data = "表示 ソース";                          # データを操作する前に文字コード変換する
  $data = jcode($data)->h2z->sjis;
  @file2=($data);
  $writefile="./result/data3.txt";
  open (OUT,">$writefile") || &error('open error',$writefile);
    print OUT (@file);
  close (OUT);

subjcode-euc.cgi // Topに戻る // indexに戻る
Copyright(C) 2009-2021 Grandmaster Last up : 2020/09/18