UTF-8からShift_JISに変換できない文字を見つけたい

スポンサーリンク

PowerShellを使います(PowerShellの使い方はこの記事)。

スポンサーリンク

スクリプト

# 変換したいUTF-8テキストファイルのパス(1行ずつ比較)
$path = "C:\your\path\input_utf8.txt"

# SJISエンコーディングオブジェクト
$sjis = [System.Text.Encoding]::GetEncoding("shift_jis")

# ファイルをUTF-8として読み込み
Get-Content -Encoding UTF8 -Path $path | ForEach-Object {
    $line = $_
    $bytes = $sjis.GetBytes($line)
    $converted = $sjis.GetString($bytes)

    if ($line -ne $converted) {
        $diff = @()
        for ($i = 0; $i -lt $line.Length; $i++) {
            if ($i -lt $converted.Length -and $line[$i] -ne $converted[$i]) {
                $diff += $line[$i]
            }
        }
        Write-Host "変換できなかった行:" -ForegroundColor Yellow
        Write-Host "元の行     : $line"
        Write-Host "変換後     : $converted"
        Write-Host "失われた文字: $($diff -join '')"
        Write-Host "------------------------------"
    }
}

こんな感じで出力されます。

変換できなかった行:
元の行 : 𠮷野家で牛丼を食べた。
変換後 : ?野家で牛丼を食べた。
失われた文字: 𠮷
——————————



——————————

コメント