サユセ「、ホサカハ

、ュ、゙、゙、ヒPerl、ヌ、

sjisで記述

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

文字コード「Shift_JIS」で記述すると、途中文字化けするのはわかっていたとして、EUC-JPに変換した保存データも文字化けしてしまった。

before number = 1
  1. 1st aiueo kakikukeko 2nd ABCDE EFGHI 3rd 12345 67890 4th 漢字コード:Shift_JIS 5th 侮ヲ
after number = 5
  1. 1st aiueo kakikukeko
  2. 2nd ABCDE EFGHI
  3. 3rd 12345 67890
  4. 4th 漢字コード:Shift_JIS
  5. 5th 侮ヲ

script

# ---------------------------
# 漢字コードの不思議
# ヘッダー・フッターの部分は省略
# ---------------------------
# データセット
  my $data =<<"_HTML_";
1st aiueo kakikukeko
2nd ABCDE EFGHI
3rd 12345 67890
4th 漢字コード:Shift_JIS              # ソースで異なるのは、記述する漢字コード+改行コードのみ
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->euc;          # EUC-JPに変換
  }
  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-sjis.cgi // Top、ヒフ皃 // index、ヒフ皃
Copyright(C) 2009-2021 Grandmaster Last up : 2020/09/18