3 Eylül 2017 Pazar

[BatchScript] Thay đổi định dạng mã hóa của văn bản trong Notepad


New text document đã quá quen thuộc với người sử dụng windows rồi. Nó như 1 cuốn sổ tay có sẵn gọn nhẹ đơn giản, dễ sử dụng. Tuy nhiên mặc định của nó luôn là chuẩn mã hóa ANSI vì thế mỗi khi bạn muốn lưu văn bản của mình dưới chuẩn khác thì phải thao tác khá phức tạp
Hiện nay trong notepad phổ biến 3 kiểu mã hóa: Unicode, UTF-8 và ANSI
  • "Unicode" không phải là mã hóa, không may rất nhiều tài liệu sử dụng nó không chính xác để chỉ mã Unicode nào mà hệ thống cụ thể sử dụng theo mặc định. Trên Windows và Java, điều này thường có nghĩa là UTF-16; ở nhiều nơi khác, nó có nghĩa là UTF-8. Chính xác, Unicode đề cập đến các ký tự trừu tượng thiết lập chính nó, không phải cho bất kỳ mã hóa cụ thể.
  • UTF-8: mã hóa độ dài biến đổi, 1-4 byte cho mỗi điểm mã. Giá trị ASCII được mã hoá dưới dạng ASCII bằng 1 byte.
  • ANSI: Không có mã hóa ANSI cố định - có rất nhiều trong số chúng. Thông thường khi người ta nói "ANSI", có nghĩa là "ngôn ngữ mặc định / bảng mã cho hệ thống" được lấy qua Encoding.Default và thường là Windows-1252 nhưng có thể là các ngôn ngữ khác.
Để thuận tiện cho việc mặc định các chuẩn mã hóa này, tôi có soạn ra 1 file batch giúp bạn nhanh chóng chuyển đổi và phục hồi lại mặc định tránh các thao tác thủ công dài dòng mất thời gian. File có nội dung như sau
:: Author - Hoang Hung
:: Homepage - https://hung1001nd.blogspot.com
@echo off
color 0f
mode con: cols=100 lines=25
title Changing the default format in Notepad

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if "%errorlevel%" NEQ "0" (
echo: Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo: UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs" & exit
)
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"

if not exist %systemroot%\SHELLNEW mkdir %systemroot%\SHELLNEW

:main
cls
echo ----------------------------------------------------------------------------------------------------
echo Made by Hoang Hung
echo https://hung1001nd.blogspot.com
echo ----------------------------------------------------------------------------------------------------
echo [1]: Default ANSI
echo [2]: Default Unicode
echo [3]: Default UTF-8
echo [4]: Checking Default
echo [X]: EXIT
echo ----------------------------------------------------------------------------------------------------
choice /c 1234X /m "Your choice: "
if %errorlevel%==5 goto:eof
if %errorlevel%==4 goto:check
if %errorlevel%==3 call:process "TXTUTF-8.txt"
if %errorlevel%==2 call:process "TXTUNICODE.txt"
if %errorlevel%==1 goto:ansi

:process
if "%~1"=="TXTUTF-8.txt" if exist "%systemroot%\SHELLNEW\TXTUNICODE.txt" del /f /q "%systemroot%\SHELLNEW\TXTUNICODE.txt"
if "%~1"=="TXTUNICODE.txt" if exist "%systemroot%\SHELLNEW\TXTUTF-8.txt" del /f /q "%systemroot%\SHELLNEW\TXTUTF-8.txt"
xcopy %~dp0%~1 %systemroot%\SHELLNEW /s /y
Reg.exe add "HKEY_CLASSES_ROOT\.txt\ShellNew" /v "FileName" /t REG_SZ /d "%~1" /f
echo.&echo DONE !&timeout 3 >nul&goto:main

:ansi
if exist "%systemroot%\SHELLNEW\TXTUNICODE.txt" del /f /q "%systemroot%\SHELLNEW\TXTUNICODE.txt"
if exist "%systemroot%\SHELLNEW\TXTUTF-8.txt" del /f /q "%systemroot%\SHELLNEW\TXTUTF-8.txt"
Reg.exe delete "HKEY_CLASSES_ROOT\.txt\ShellNew" /v "FileName" /f
echo.&echo DONE !&timeout 3 >nul&goto:main

:check
setlocal
for /f "skip=1 tokens=3" %%a in ('reg query "HKEY_CLASSES_ROOT\.txt\ShellNew" /v "FileName" 2^>nul') do set filename=%%a
if "%filename%"=="" echo.&echo Current Default is ANSI
if "%filename%"=="TXTUTF-8.txt" echo.&echo Current Default is UTF-8
if "%filename%"=="TXTUNICODE.txt" echo.&echo Current Default is Unicode
endlocal
set filename=
echo.&echo Press any to back !
pause >nul &goto:main
Bạn cần tạo thêm 2 file .txt để trống nội dung tên TXTUTF-8.txt (Encoding UTF-8) và TXTUNICODE.txt (Encoding Unicode) đặt cùng thư mục với file bat

Hoặc nếu lười thì có thể tải về đầy đủ theo liên kết


Cách sử dụng rất đơn giản, chạy file và nhấn các phím để chuyển đổi qua lại.

Chi tiết bạn có thể xem video demo tại đây

Good Luck !

Hiç yorum yok:

Yorum Gönder