sourcetip

Windows에서 파일 인코딩 가져오기

fileupload 2023. 5. 3. 21:40
반응형

Windows에서 파일 인코딩 가져오기

이것은 실제로 프로그래밍 질문이 아닙니다. 텍스트 파일의 현재 인코딩을 가져올 수 있는 명령줄 또는 Windows 도구(Windows 7)가 있습니까?물론 작은 C# 앱을 작성할 수 있지만 이미 내장되어 있는 것이 있는지 알고 싶었습니다.

Windows(윈도우)와 함께 제공되는 일반적인 오래된 바닐라 메모장을 사용하여 파일을 엽니다.
다른 이름으로 저장...을 누르면 파일의 인코딩이 표시됩니다.
예요: 다과같이표시다니됩음다▁it.여기에 이미지 설명 입력

기본으로 선택한 인코딩이 무엇이든 파일에 대한 현재 인코딩입니다.
UTF-8인 경우 ANSI로 변경하고 저장을 클릭하여 인코딩(또는 visa-versa)을 변경할 수 있습니다.

인코딩 유형이 다양하다는 것은 알고 있지만 내보내기 파일이 UTF-8로 되어 있고 ANSI가 필요하다는 말을 들었을 때 필요한 것은 이것뿐이었습니다.그것은 한 번 수출이었기 때문에, 메모장이 저에게 딱 맞습니다.

참고: 제가 이해하기로는 "유니코드" (메모장에 나열된)가 UTF-16의 잘못된 이름이라고 생각합니다.
메모장의 "유니코드" 옵션에 대한 자세한 내용은 다음과 같습니다.Windows 7 - UTF-8 및 유니코드

Windows Machine에 "git" 또는 "Cygwin"이 있는 경우 파일이 있는 폴더로 이동하여 다음 명령을 실행합니다.

file *

그러면 해당 폴더에 있는 모든 파일의 인코딩 세부 정보가 표시됩니다.

(리눅스) 명령줄 도구 '파일'은 GnuWin32를 통해 Windows에서 사용할 수 있습니다.

http://gnuwin32.sourceforge.net/packages/file.htm

Git이 설치되어 있으면 C:\Program Files\git\usr\bin에 있습니다.

예:

C:\사용자\SH\다운로드\SquareRoot>file *_UpgradeReport_Files; 디렉토리디버그; 디렉터리지속.h; CRLF 줄바꿈 문자가 있는 ASCII C++ 프로그램 텍스트ipch; 디렉토리main.cpp; ASCII C 프로그램 텍스트, CRLF 줄 구분 기호 사용정확.txt; ASCII 텍스트, CRLF 줄 구분 기호 사용릴리스; 디렉토리속도.txt; ASCII 텍스트, CRLF 줄 구분 기호 사용SquareRoot.sdf; 데이터SquareRoot.sln; UTF-8 유니코드(BOM 포함) 텍스트, CRLF 줄 구분 기호 사용SquareRoot.sln.doc 상태입니다.suo; PCX 버전 2.5 이미지 데이터제곱근.suo; CDF V2 문서, 손상됨: 요약 정보를 읽을 수 없습니다.SquareRoot.vcproj; XML 문서 텍스트SquareRoot.vcxproj; XML 문서 텍스트SquareRoot.vcxproj.필터; XML 문서 텍스트SquareRoot.vcxproj.user; XML 문서 텍스트제곱근법h; CRLF 줄바꿈 문자가 있는 ASCII C 프로그램 텍스트업그레이드 로그.XML; XML 문서 텍스트
C:\사용자\SH\다운로드\SquareRoot>file --mime-encoding *_UpgradeReport_Files; 바이너리디버그; 바이너리지속.h; 우리를 속이는ipch; 이진수main.cpp; us-message정확.txt; us-message릴리스; 이진수속도.txt; us-messageSquareRoot.sdf; 이진SquareRoot.sln; utf-8SquareRoot.sln.doc 상태입니다.suo; 이진수제곱근.suo; CDF V2 문서, 손상됨: 요약 inbinary를 읽을 수 없습니다.SquareRoot.vcproj;us-asciSquareRoot.vcxproj;utf-8SquareRoot.vcxproj.필터; utf-8SquareRoot.vcxproj.user;utf-8제곱근법h; 우리를 속이는업그레이드 로그.XML; us-asci

git를 설치합니다(Windows에서는 gitbash 콘솔을 사용해야 함).유형:

file --mime-encoding *   

현재 디렉터리에 있는 모든 파일에 대해, 또는

file --mime-encoding */*   

모든 하위 디렉터리에 있는 파일의 경우

유용한 다른 도구: https://archive.codeplex.com/ ?p=syschecker EXE는 여기에서 찾을 수 있습니다.

BOM을 통해 유니코드 텍스트 인코딩 제품군을 탐지하는 방법은 다음과 같습니다.이 방법은 텍스트 파일(특히 유니코드 파일)에서만 작동하며 기본적으로 다음과 같이 작동하기 때문에 정확도가 낮습니다.ascii편집기와 은 BOM입니다).UTF8HTTP/웹 에코시스템과 일치시키려면)을 선택합니다.

2018년 업데이트: 더 이상 이 방법을 권장하지 않습니다.@Sybren의 권장에 따라 GIT 또는 *nix 도구에서 file.exe를 사용하는 것이 좋습니다. 나중에 PowerShell을 통해 이를 수행하는 방법을 설명하겠습니다.

# from https://gist.github.com/zommarin/1480974
function Get-FileEncoding($Path) {
    $bytes = [byte[]](Get-Content $Path -Encoding byte -ReadCount 4 -TotalCount 4)

    if(!$bytes) { return 'utf8' }

    switch -regex ('{0:x2}{1:x2}{2:x2}{3:x2}' -f $bytes[0],$bytes[1],$bytes[2],$bytes[3]) {
        '^efbbbf'   { return 'utf8' }
        '^2b2f76'   { return 'utf7' }
        '^fffe'     { return 'unicode' }
        '^feff'     { return 'bigendianunicode' }
        '^0000feff' { return 'utf32' }
        default     { return 'ascii' }
    }
}

dir ~\Documents\WindowsPowershell -File | 
    select Name,@{Name='Encoding';Expression={Get-FileEncoding $_.FullName}} | 
    ft -AutoSize

권장 사항:이것은 다음과 같은 경우에 상당히 잘 작동할 수 있습니다.dir,ls또는Get-ChildItem는 알려진 텍스트 파일만 검사하고 알려진 도구 목록에서 "불량 인코딩"을 찾을 때만 검사합니다. (즉, SQL Management Studio는 UTF16으로 기본 설정되어 있으며, 이는 수년간 기본 설정이었던 Windows용 GIT 자동 cr-lf를 손상시켰습니다.)

간단한 해결책은 Firefox에서 파일을 여는 것일 수 있습니다.

  1. 파일을 파이어폭스로 드래그 앤 드롭
  2. Ctrl+I를 눌러 페이지 정보 열기

텍스트 인코딩이 "페이지 정보" 창에 나타납니다.

여기에 이미지 설명 입력

참고: 파일이 txt 형식이 아니면 이름을 txt로 바꾸고 다시 시도하십시오.

추신: 자세한 내용은 이 기사를 참조하십시오.

제가 4번 답을 썼습니다.하지만 최근에는 모든 컴퓨터에 Git가 설치되어 있어서 이제는 @Sybren의 솔루션을 사용합니다.여기 PowerShell에서 솔루션을 편리하게 사용할 수 있는 새로운 답변이 있습니다(모든 git/usr/bin을 PATH에 넣지 않아도 됩니다. 이는 저에게 너무 복잡합니다).

을 당신의 니추합다에 추가하세요.profile.ps1:

$global:gitbin = 'C:\Program Files\Git\usr\bin'
Set-Alias file.exe $gitbin\file.exe

다음과 같이 사용됩니다.file.exe --mime-encoding *PS 별칭이 작동하려면 명령에 .exe를 포함해야 합니다.

하지만 PowerShell 프로필을 사용자 지정하지 않으면 내 프로필로 시작하는 것이 좋습니다. https://gist.github.com/yzorg/8215221/8e38fd722a3dfc526bbe4668d1f3b08eb7c08be0 에서 저장하십시오.~\Documents\WindowsPowerShell깃이 없는 컴퓨터에서 사용하는 것은 안전하지만 깃이 없으면 경고를 기록합니다.

명령의 .exe도 사용하는 방법입니다.C:\WINDOWS\system32\where.exepowershell에서, 그리고 powershell에 의해 "기본적으로 숨겨지는" 다른 많은 OS CLI 명령, *shrug*.

파일 위치에서 깃바시를 열고 명령을 실행하면 간단히 확인할 수 있습니다.file -i file_name

user filesData
$ file -i data.csv
data.csv: text/csv; charset=utf-8

신뢰할 수 있는 ASCII, bom 및 utf8 탐지를 위한 일부 C 코드: https://unicodebook.readthedocs.io/guess_encoding.html

BOM을 사용하는 ASCII, UTF-8 및 인코딩(BOM을 사용하는 UTF-7, BOM을 사용하는 UTF-8, UTF-16 및 UTF-32)만 신뢰할 수 있는 알고리즘을 사용하여 문서의 인코딩을 가져옵니다.다른 모든 인코딩의 경우 통계에 기반한 휴리스틱을 신뢰해야 합니다.

편집:

C# 답변의 강력한 버전: 모든 파일의 인코딩을 효과적으로 찾을 수 있는 방법.서명(폭탄)과만 작동합니다.

# get-encoding.ps1
param([Parameter(ValueFromPipeline=$True)] $filename)    
begin {
  # set .net current directoy                                                                                                   
  [Environment]::CurrentDirectory = (pwd).path
}
process {
  $reader = [System.IO.StreamReader]::new($filename, 
    [System.Text.Encoding]::default,$true)
  $peek = $reader.Peek()
  $encoding = $reader.currentencoding
  $reader.close()
  [pscustomobject]@{Name=split-path $filename -leaf
                BodyName=$encoding.BodyName
                EncodingName=$encoding.EncodingName}
}


.\get-encoding chinese8.txt

Name         BodyName EncodingName
----         -------- ------------
chinese8.txt utf-8    Unicode (UTF-8)


get-childitem -file | .\get-encoding

Node.js/npm 솔루션을 찾고 계십니까?인코딩 체커 시도:

npm install -g encoding-checker

사용.

Usage: encoding-checker [-p pattern] [-i encoding] [-v]
 
Options:
  --help                 Show help                                     [boolean]
  --version              Show version number                           [boolean]
  --pattern, -p, -d                                               [default: "*"]
  --ignore-encoding, -i                                            [default: ""]
  --verbose, -v                                                 [default: false]

현재 디렉터리에 있는 모든 파일의 인코딩 가져오기:

encoding-checker

모두의 인코딩 반환md현재 디렉터리의 파일:

encoding-checker -p "*.md"

현재 디렉터리 및 하위 폴더에 있는 모든 파일의 인코딩 가져오기(대용량 폴더의 경우 상당한 시간이 소요되며 응답이 없는 것으로 보임):

encoding-checker -p "**"

자세한 예는 npm 문서 또는 공식 저장소를 참조하십시오.

메모장과 함께 위에 나열된 솔루션과 유사하게 사용 중인 경우 Visual Studio에서 파일을 열 수도 있습니다.Visual Studio에서 "File > Advanced Save Options.."를 선택할 수 있습니다.."

"Encoding:" 콤보 상자는 파일에 현재 사용 중인 인코딩을 구체적으로 알려줍니다.메모장보다 훨씬 더 많은 텍스트 인코딩이 나열되어 있어 전 세계의 다양한 파일을 다룰 때 유용합니다.

메모장과 마찬가지로, 선택사항 목록에서 인코딩을 변경한 다음 "확인"을 누른 후 파일을 저장할 수도 있습니다.인코딩으로 저장을 통해 원하는 인코딩을 선택할 수도 있습니다.Save As(다른 이름으로 저장) 대화 상자의 옵션(Save(저장) 버튼 옆에 있는 화살표를 클릭함)을 클릭합니다.

VIM 또는 메모장++을 사용하는 방법밖에 없습니다.

인코딩 체커

파일 인코딩 검사기는 하나 이상의 파일의 텍스트 인코딩을 확인할 수 있는 GUI 도구입니다.도구는 선택한 모든 파일에 대한 인코딩을 표시하거나 사용자가 지정한 인코딩이 없는 파일만 표시할 수 있습니다.

파일 인코딩 검사기에 필요합니다.실행할 NET 4 이상.

언급URL : https://stackoverflow.com/questions/3710374/get-encoding-of-a-file-in-windows

반응형