PowerShell Script untuk Mengonversi Nama File UTF-8 yang Salah Interpretasi
Sering kali ketika menyalin file di Windows, beberapa aplikasi salah menginterpretasikan UTF-8 sebagai CodePage 1252, sehingga nama file menjadi rusak. Skrip PowerShell berikut membantu mengembalikan nama file ke UTF-8 yang sebenarnya.
Skrip PowerShell
#region Parameters
param(
[string]$Dir = "."
)
#endregion
# Pastikan konsol menggunakan CP 65001 dan font NSimSun untuk menampilkan karakter CJK
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$files = Get-ChildItem -File -Path $Dir -Recurse -Name
foreach ($f in $files) {
$bytes = [System.Text.Encoding]::GetEncoding(1252).GetBytes($f)
$nf = [io.path]::GetFileName([System.Text.Encoding]::UTF8.GetString($bytes))
Write-Host "$f → $nf"
Rename-Item -LiteralPath "$f" -NewName "$nf"
}
# Pesan "Press any key" ketika dijalankan lewat klik kanan
$auxRegKey='\SOFTWARE\Classes\Microsoft.PowerShellScript.1\Shell\0\Command'
$auxRegVal=(get-itemproperty -literalpath HKLM:$auxRegKey).'(default)'
$auxRegCmd=$auxRegVal.Split(' ',3)[2].Replace('%1', $MyInvocation.MyCommand.Definition)
if ("`"$($myinvocation.Line)`"" -eq $auxRegCmd) {
Write-Host "`nPress any key to exit..."
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')
}
Cara Menggunakan
- Simpan skrip sebagai
utf8_rename.ps1di folder paling atas tempat file yang salah interpretasi berada. - Klik kanan skrip di Explorer dan pilih Run with PowerShell.
- Pastikan konsol disetel ke CodePage 65001 (UTF-8) dan font mendukung karakter khusus seperti NSimSun.
Catatan
- Skrip ini mengonversi semua file secara rekursif dalam folder yang ditentukan.
- Gunakan
-LiteralPathpadaRename-Itemagar nama file dengan karakter seperti [ atau ] tidak menyebabkan error. - Windows 10 19H1 ke atas menyediakan opsi untuk mengatur sistem codepage ke UTF-8, yang bisa membantu mengurangi kasus salah interpretasi.
Label: 1252, codepage, conversion, PowerShell, UTF-8, Windows