回答:
Windowsに付属する通常の古いメモ帳を使用してファイルを開きます。
「名前を付けて保存」をクリックすると、ファイルのエンコーディングが表示されます。
次のようになります。
デフォルトで選択されているエンコーディングが何であれ、それが現在のファイルのエンコーディングです。
UTF-8の場合は、ANSIに変更し、[保存]をクリックしてエンコードを変更できます(またはその逆)。
エンコードにはさまざまな種類があることに気づきましたが、エクスポートファイルがUTF-8であり、ANSIが必要であると通知されたとき、これだけで十分でした。これは1回限りのエクスポートだったので、メモ帳は私にぴったりです。
参考:私の理解から、「Unicode」(メモ帳にリストされている)はUTF-16の誤称だと思います。
メモ帳の「Unicode」オプションの詳細:Windows 7-UTF-8およびUnicdoe
(Linux)コマンドラインツール「ファイル」は、GnuWin32を介してWindowsで使用できます。
http://gnuwin32.sourceforge.net/packages/file.htm
gitがインストールされている場合は、C:\ Program Files \ git \ usr \ binにあります。
例:
C:\ Users \ SH \ Downloads \ SquareRoot>ファイル* _UpgradeReport_Files; ディレクトリ デバッグ; ディレクトリ duration.h; ASCII C ++プログラムテキスト、CRLF行ターミネーター付き ipch; ディレクトリ main.cpp; ASCII Cプログラムテキスト、CRLF行ターミネーター付き Precision.txt; ASCIIテキスト、CRLF行ターミネーター付き リリース; ディレクトリ Speed.txt; ASCIIテキスト、CRLF行ターミネーター付き SquareRoot.sdf; データ SquareRoot.sln; UTF-8 Unicode(BOM付き)テキスト、CRLF行ターミネーター付き 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; ASCII Cプログラムテキスト、CRLF行ターミネーター付き UpgradeLog.XML; XMLドキュメントテキスト C:\ Users \ SH \ Downloads \ SquareRoot> file --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
Windowsマシンに「git」または「Cygwin」がある場合は、ファイルが存在するフォルダーに移動して、次のコマンドを実行します。
file *
これにより、そのフォルダー内のすべてのファイルのエンコードの詳細が表示されます。
file *
コマンドの結果をフィルタリングできます
file --mime-encoding
は、ファイルのエンコードを取得することです
私が便利だと思った別のツール:https : //archive.codeplex.com/? p = encodingchecker EXEはここにあります
これが、BOMを介してテキストエンコーディングのUnicodeファミリを検出する方法です。このメソッドはテキストファイル(特にUnicodeファイル)でのみ機能するため、このメソッドの精度は低く、デフォルトでascii
はBOMが存在しない場合に設定されます(ほとんどのテキストエディターと同様に、デフォルトはUTF8
HTTP / Webエコシステムに一致させる場合です) )。
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
、適切に機能します。(つまり、SQL Management StudioのデフォルトはUTF16であり、長年のデフォルトであったWindowsのGIT auto-cr-lfに違反していました。)ls
Get-ChildItem
Get-FileEncoding
私のシステムには存在しないようです。カスタムコマンドレットですか?
Get-FileEncoding
。私はpythonとnodejsからのpunycodeもレビューしましたが、この小さなバージョンは私の使用法で80/20に達します(99/1に似ています)。他の人のファイルをホストしている場合はfile
、Sybenの回答(stackoverflow.com/a/34766140/195755)のコマンドまたは別の本番品質のUnicodeデコーダーを使用することをお勧めします。
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 *
。PSエイリアスを機能させるには、コマンドに.exeを含める必要があります。
:あなたがカスタマイズしない場合しかし、あなたPowerShellには、私はあなたが地雷で始まる示唆profile.ps1 https://gist.github.com/yzorg/8215221/8e38fd722a3dfc526bbe4668d1f3b08eb7c08be0を
し、それを保存します~\Documents\WindowsPowerShell
。gitがインストールされていないコンピュータで使用しても安全ですが、gitが見つからない場合は警告が表示されます。
コマンドの.exeは、C:\WINDOWS\system32\where.exe
Powershellからの使用方法でもあります。そして、Powershell、* shrug *によって「デフォルトで非表示」になっている他の多くのOS CLIコマンド。
file
、file file.exe
\ _(ツ)_ /¯の代わりにfile.exeのエイリアスとして使用することもできます
dir | where Size -lt 10000
対where.exe git
。
where.exe
と区別するために使用します。PSはのwhere
組み込みエイリアスですWhere-Object
。例:where.exe git*
vs ls . | where Size -lt 10000
file.exe
、.NET静的クラスと同じパターンを使用します。これは、エンコーディングを検出している同じスクリプトで必要になる場合があります。例: [File]::SetCreationTime("readme.md", [DateTime]::Now)
。
Encoding Recognizer(javaが必要)と呼ばれる無料のユーティリティを使用できます。あなたはそれをhttp://mindprod.com/products2.html#ENCODINGRECOGNISERで見つけることができます
上記のメモ帳を使用したソリューションと同様に、使用している場合は、Visual Studioでファイルを開くこともできます。Visual Studioでは、[ファイル]> [保存オプションの詳細...]を選択できます。
「エンコーディング:」コンボボックスは、ファイルに現在使用されているエンコーディングを具体的に示します。そこにはメモ帳よりも多くのテキストエンコーディングがリストされているため、世界中のさまざまなファイルを処理する場合に役立ちます。
メモ帳と同じように、オプションのリストからエンコードを変更し、[OK]をクリックしてファイルを保存することもできます。また、[名前を付けて保存]ダイアログの[エンコードを指定して保存...]オプションで([保存]ボタンの横にある矢印をクリックして)、必要なエンコードを選択することもできます。
信頼できるascii、bom、およびutf8を検出するためのいくつかのCコード:https : //unicodebook.readthedocs.io/guess_encoding.html
ASCII、UTF-8、およびBOMを使用するエンコーディング(UTF-7とBOM、UTF-8とBOM、UTF-16、およびUTF-32)のみが、ドキュメントのエンコーディングを取得するための信頼できるアルゴリズムを備えています。他のすべてのエンコーディングでは、統計に基づくヒューリスティックを信頼する必要があります。
編集:
C#のPowershellバージョンの回答: ファイルのエンコーディングを見つける効果的な方法。署名(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