답변:
Windows와 함께 제공되는 일반 오래된 바닐라 메모장을 사용하여 파일을 엽니 다.
" 다른 이름으로 저장 ... " 을 클릭하면 파일 인코딩이 표시됩니다 .
다음과 같이 보일 것입니다 :
기본적으로 선택된 인코딩이 무엇이든, 그것은 현재 인코딩이 파일에 대한 것입니다.
UTF-8 인 경우 ANSI로 변경하고 저장을 클릭하여 인코딩을 변경하거나 비자를 변경할 수 있습니다.
다양한 유형의 인코딩이 있다는 것을 알고 있지만 내보내기 파일이 UTF-8로되어 있고 ANSI가 필요하다는 알림을 받았을 때 필요한 모든 것입니다. 한 번만 수출되었으므로 메모장이 청구서에 적합했습니다.
참고 : 이해 한 바에 따르면 " 유니 코드 "(메모장에 나열 됨)는 UTF-16의 잘못된 이름 이라고 생각 합니다.
메모장의 " 유니 코드 "옵션에 대한 추가 정보 : Windows 7-UTF-8 및 Unicdoe
(Linux) 명령 줄 도구 'file'은 Windows에서 GnuWin32를 통해 사용할 수 있습니다.
http://gnuwin32.sourceforge.net/packages/file.htm
git이 설치되어 있다면 C : \ Program Files \ git \ usr \ bin에 있습니다.
예:
C : \ Users \ SH \ Downloads \ SquareRoot> 파일 * _UpgradeReport_Files; 예배 규칙서 디버그; 예배 규칙서 duration.h; CRLF 줄 종결자가 포함 된 ASCII C ++ 프로그램 텍스트 ipch; 예배 규칙서 main.cpp; CRLF 줄 종결자가 포함 된 ASCII C 프로그램 텍스트 Precision.txt; CRLF 줄 종결자가 포함 된 ASCII 텍스트 해제; 예배 규칙서 Speed.txt; CRLF 줄 종결자가 포함 된 ASCII 텍스트 SquareRoot.sdf; 데이터 SquareRoot.sln; CRLF 줄 종결자가 포함 된 UTF-8 유니 코드 (BOM 포함) 텍스트 SquareRoot.sln.docstates.suo; PCX ver. 2.5 이미지 데이터 SquareRoot.suo; CDF V2 문서가 손상되었습니다 : 요약 정보를 읽을 수 없습니다 SquareRoot.vcproj; XML 문서 텍스트 SquareRoot.vcxproj; XML 문서 텍스트 SquareRoot.vcxproj.filters; XML 문서 텍스트 SquareRoot.vcxproj.user; XML 문서 텍스트 squarerootmethods.h; CRLF 줄 종결자가 포함 된 ASCII C 프로그램 텍스트 UpgradeLog.XML; XML 문서 텍스트 C : \ Users \ SH \ Downloads \ SquareRoot> 파일 --mime-encoding * _UpgradeReport_Files; 이진 디버그; 이진 duration.h; us-ascii ipch; 이진 main.cpp; us-ascii Precision.txt; us-ascii 해제; 이진 Speed.txt; us-ascii SquareRoot.sdf; 이진 SquareRoot.sln; utf-8 SquareRoot.sln.docstates.suo; 이진 SquareRoot.suo; CDF V2 문서가 손상되었습니다 : 요약 정보를 읽을 수 없습니다 SquareRoot.vcproj; us-ascii SquareRoot.vcxproj; utf-8 SquareRoot.vcxproj.filters; utf-8 SquareRoot.vcxproj.user; utf-8 squarerootmethods.h; us-ascii UpgradeLog.XML; us-ascii
내가 유용하다고 생각한 다른 도구 : https://archive.codeplex.com/?p=encodingchecker EXE는 여기 에서 찾을 수 있습니다
다음은 BOM을 통해 유니 코드 텍스트 인코딩 패밀리를 감지하는 방법입니다. 이 방법은 텍스트 파일 (특히 유니 코드 파일)에서만 작동하고 ascii
BOM이 없을 때 기본값으로 설정 되므로 정확도가 낮습니다 (대부분의 텍스트 편집기 UTF8
와 같이 HTTP / 웹 에코 시스템을 일치시키려는 경우 기본값이 됨) ).
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 auto-cr-lf를 손상 시켰습니다.
Get-FileEncoding
내 시스템에 존재하지 않는 것 같습니다. 사용자 지정 cmdlet입니까?
Get-FileEncoding
있습니다. 나는 파이썬과 nodejs에서 punycode를 검토했지만이 작은 버전은 내 사용법으로 80/20에 도달합니다 (99/1과 유사). 다른 사람들의 파일을 호스팅하는 경우 file
Syben의 답변 ( stackoverflow.com/a/34766140/195755 ) 또는 다른 프로덕션 품질의 유니 코드 디코더 에서 명령 을 사용하는 것이 좋습니다 .
default
인코딩입니다 (BOM이 없을 때). XML, JSON 및 JavaScript의 경우 기본값은 UTF8이지만 마일리지는 다를 수 있습니다.
나는 # 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 *
. 당신은 .EXE 포함해야 작업에 PS 별칭에 대한 명령.
그러나 PowerShell profile.ps1을 사용자 지정하지 않으면 https://gist.github.com/yzorg/8215221/8e38fd722a3dfc526bbe4668d1f3b08eb7c08be0으로 시작하여
저장하십시오 ~\Documents\WindowsPowerShell
. 자식없이 컴퓨터에서 사용하는 것이 안전하지만 자식을 찾지 못하면 경고를 씁니다.
이 명령 의 .exe 는 C:\WINDOWS\system32\where.exe
powershell에서 사용하는 방법이기도합니다 . powershell * shrug *에 의해 "기본적으로 숨겨져있는"다른 많은 OS CLI 명령.
file
대신 file.exe의 별칭으로 사용할 수 있습니다.file.exe
dir | where Size -lt 10000
대를 where.exe git
.
where.exe
구별 하기 위해 사용 합니다 . 예 : 대 where
Where-Object
where.exe git*
ls . | where Size -lt 10000
file.exe
vs. .NET 정적 클래스에 동일한 패턴을 사용합니다 . 인코딩을 감지하는 동일한 스크립트에 필요할 수 있습니다. 예 : [File]::SetCreationTime("readme.md", [DateTime]::Now)
.
Encoding Recognizer라는 무료 유틸리티를 사용할 수 있습니다 (java 필요). http://mindprod.com/products2.html#ENCODINGRECOGNISER 에서 찾을 수 있습니다 .
메모장에서 위에 나열된 솔루션과 유사하게, 사용중인 경우 Visual Studio에서 파일을 열 수도 있습니다. Visual Studio에서 "파일> 고급 저장 옵션 ..."을 선택할 수 있습니다.
"인코딩 :"콤보 상자는 현재 파일에 어떤 인코딩이 사용되고 있는지 구체적으로 알려줍니다. 메모장보다 텍스트 인코딩이 훨씬 많으므로 전 세계의 다양한 파일을 처리 할 때 유용합니다.
메모장과 마찬가지로 옵션 목록에서 인코딩을 변경 한 다음 "확인"을 누른 후 파일을 저장할 수도 있습니다. 다른 이름으로 저장 대화 상자의 "인코딩으로 저장 ..."옵션을 통해 원하는 인코딩을 선택할 수도 있습니다 (저장 버튼 옆의 화살표를 클릭하여).
신뢰할 수있는 ascii, bom 및 utf8 감지를위한 일부 C 코드 : https://unicodebook.readthedocs.io/guess_encoding.html
ASCII를 사용하는 ASCII, UTF-8 및 BOM을 사용하는 인코딩 (UTF-7은 BOM, UTF-8은 BOM, UTF-16 및 UTF-32)을 사용하여 문서의 인코딩을 얻는 신뢰할 수있는 알고리즘이 있습니다. 다른 모든 인코딩의 경우 통계를 기반으로하는 휴리스틱을 신뢰해야합니다.
편집하다:
C #의 파워 쉘 버전은 다음과 같이 답변 합니다. 파일의 인코딩을 효과적으로 찾는 방법 . 서명 (boms)에서만 작동합니다.
# 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