macOS 使用 enca 識別 文件編碼類型(比 file 命令準確)

文章目錄

    • macOS 上安裝 enca
    • 基本使用
    • 起因 - iconv
    • 關于 enca
    • 安裝 Enca
    • enca & enconv 其它用法


macOS 上安裝 enca

brew install enca

基本使用

enca filepath.txt

示例

$ enca 動態規劃算法.txt       [0]
Simplified Chinese National Standard; GB2312CRLF line terminators

起因 - iconv

在macOS 上打開一些 .txt 文件,會顯示亂碼(非 utf-8 編碼),我想使用 iconv 命令對文件進行轉碼。
此時使用 file 命令來獲得文件編碼,在使用 iconv 轉碼時會出錯。使用 enca 獲取的則正確。

副 iconv 轉碼命令:

iconv  -f GB2312   -t UTF-8  分治算法.txt > 分治算法2.txt 

iconv 使用可詳見:https://ezcode.blog.csdn.net/article/details/146444439


關于 enca

如果解決問題之余,還想更多了解 enca 可以往下看。

enca github : https://github.com/nijel/enca

Enca : Extremely Naive Charset Analyser,極簡的字符集分析器

由兩個主要組件組成:

  • libenca,一個編碼檢測庫。
    它目前支持白俄羅斯語、保加利亞語、克羅地亞語、捷克語、愛沙尼亞語、匈牙利語、拉脫維亞語、立陶宛語、波蘭語、俄語、斯洛伐克語、斯洛文尼亞語、烏克蘭語、中文以及一些獨立于語言的多字節編碼。
    API 應該相對穩定(可以理解為“它要么只發生微小的變化,要么發生非常劇烈的變化”)。
  • enca,一個命令行前端,集成了 libenca 和幾個字符集轉換庫和工具(GNU recode、UNIX98 iconv、perl Unicode::Map、cstocs)。

安裝 Enca

Enca 應該可以在每個符合 POSIX.1 規范的系統上使用 ISO C 編譯器編譯并運行,實際上它也可以在許多不符合規范的系統上編譯(下面列出依賴項)。

如果您擁有以下附加工具,Enca 可以使用它們作為外部轉換器:

  • GNU recode 和相關的編碼庫
  • Perl 字符集轉換器 Unicode::Map8 或 Unicode::Map
  • cstocs,著名的捷克字符集轉換器

可選功能:

  • GNU recode 庫接口的編譯由 --with-librecode[=DIR]--without-librecode 配置參數控制。
    默認情況下,如果找到它則會編譯進去。您還可以指定一個文件夾;librecode 包含文件將在此 DIR/include 中搜索,庫本身在 DIR/lib 中。
  • UNIX98 iconv 接口的編譯由 --with-libiconv=[DIR]--without-libiconv 配置參數控制。
    默認情況下,如果找到并且被認為可用則會編譯進去。您還可以指定一個 DIR;libiconv 包含文件將在此 DIR/include 中搜索,庫本身在 DIR/lib 中。
  • 外部轉換程序接口的編譯由 --enable-external--disable-external 配置參數控制。默認情況下是編譯進去的。

不要嘗試在以下不支持 ISO C 和 POSIX 功能的系統上編譯 Enca:

  • 函數原型。
  • 基本的 ISO C 頭文件及其聲明的函數:
    • assert.h, ctype.h, math.h, stdarg.h, stdio.h, stdlib.h
    • 任意(工作狀態)的 string.h, strings.h, memory.h
    • unistd.h, sys/stat.h, sys/types.h

對于有耐心的人:像往常一樣運行以下命令

./configure
make
make check
make install

enca & enconv 其它用法


輸入 enca --help 可以查看可用選項

也可以輸入 man enca 獲得更多說明

 $ enca --help                                                                                                   [0]
Usage:  enca [-L LANGUAGE] [OPTION]... [FILE]...enconv [-L LANGUAGE] [OPTION]... [FILE]...
Detect encoding of text files and convert them if required.Operation modes:-g, --guess             Behave as `enca' (just detect encoding by default)-c, --auto-convert      Behave as `enconv' (autoconvert by default)Output type selectors:-d, --details           Print failure reason when encoding was not recognized-e, --enca-name         Print enca's encoding name (passed to converters)-f, --human-readable    Print full (descriptive) encoding name (default)-i, --iconv-name        Print how iconv calls the encoding-m, --mime-name         Print preferred MIME encoding name-r, --rfc1345-name      Print RFC 1345 (or otherwise canonized) encoding name-s, --cstocs-name       Print how cstocs calls the encoding-n, --name=WORD         Print required name (enca-name, human-readable, etc.)-x, --convert-to=ENC    Convert file to some other encoding ENCGuessing parameters:-L, --language=LANG     Set language of FILEs; obligatory, when cannot bedetermined from locale settingsConversion parameters:-E, --external-converter-program=PATHSet external converter program name(default: piconv)-C, --try-converters=LIST  Converters to be tried (associative)(default: built-in,iconv)General options:-p, --with-filename     Print the file name for each result-P, --no-filename       Suppress the prefixing filename on output-V, --verbose           Increase verbosity levelListings:-G, --license           Print full enca license and terminate-h, --help              Print this help and terminate-l, --list=WORD         Print required list (built-in-charsets, converters,charsets, languages, lists, names, surfaces)and terminate-v, --version           Print version and build information and terminateWith no FILE, reads standard input and possibly writes converted stream to
standard output.  Exit status is 0 if all files were successfully proceeded,
1 if some were not recognized or converted, 2 in real troubles.When called as `enconv' without -x, target encoding it guessed from locales.Report bugs to https://github.com/nijel/enca/issues

2025-03-22(六)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/74307.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/74307.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/74307.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

線段樹與掃描線 —— 詳解算法思想及其C++實現

目錄 一、線段樹(Segment Tree) 基本概念 結構 操作 示例代碼 二、掃描線(Sweep Line) 基本概念 應用場景 示例代碼(矩形面積并集) 三、總結 一、線段樹(Segment Tree) 基本…

匯編代碼中嵌入回調函數的優化說明

一、概述 在 PowerPC 的匯編代碼中,我們需要實現調用 C 函數(例如回調函數),并傳遞參數。本文將詳細介紹如何通過一系列步驟完成這一目標,包括代碼示例和詳細的注釋。 二、調用 C 函數的基本步驟及代碼 1. 保存工作寄…

Uni-App 雙欄聯動滾動組件開發詳解 (電梯導航)

本文基于提供的代碼實現一個左右聯動的滾動組件&#xff0c;以下是詳細的代碼解析與實現原理說明&#xff1a; <!--雙欄聯動滾動組件 - 技術解析功能特性&#xff1a;1. 左側導航欄與右側內容區雙向聯動2. 自適應容器高度3. 平滑滾動定位4. 動態內容位置計算 --> <te…

軟考復習-傳輸介質與編碼

傳輸介質 雙絞線 傳輸距離100一200m&#xff0c;即網線&#xff0c;有多種分類 UTP非屏蔽雙絞線 STP屏蔽雙絞線 線序標準有兩種為&#xff1a; T568A標準&#xff1a;綠白、綠、橙白、藍、藍白、橙、棕白、棕 T568B標準&#xff1a;橙白、橙、綠白、藍、藍白、綠、棕白、…

論文閱讀筆記:Denoising Diffusion Probabilistic Models (3)

論文閱讀筆記&#xff1a;Denoising Diffusion Probabilistic Models (1) 論文閱讀筆記&#xff1a;Denoising Diffusion Probabilistic Models (2) 論文閱讀筆記&#xff1a;Denoising Diffusion Probabilistic Models (3) 4、損失函數逐項分析 可以看出 L L L總共分為了3項…

PyTorch 面試題及參考答案(精選100道)

目錄 PyTorch 的動態計算圖與 TensorFlow 的靜態計算圖有何區別?動態圖的優勢是什么? 解釋張量(Tensor)與 NumPy 數組的異同,為何 PyTorch 選擇張量作為核心數據結構? 什么是 torch.autograd 模塊?它在反向傳播中的作用是什么? 如何理解 PyTorch 中的 nn.Module 類?…

#C8# UVM中的factory機制 #S8.1.4# 約束的重載

今天,復習一下《UVM實戰》一書中的 關于約束的重載 章節學習。 一 問題引導 文件:src/ch8/section8.1/8.1.2/rand_mode/my_transaction.sv4 class my_transaction extends uvm_sequence_item; …17 constraint crc_err_cons{18 crc_err == 1b0;19 }20 const…

空調遙控器低功耗單片機方案

RAMSUN空調遙控器采用先進的32位低功耗單片機作為核心控制器&#xff0c;通過優化軟件算法和硬件設計&#xff0c;實現了空調遙控器的低功耗運行。單片機集成了多種功能模塊&#xff0c;包括紅外發射、按鍵掃描、電源管理等&#xff0c;有效降低了整體功耗。同時&#xff0c;該…

結構型——代理模式

結構型——代理模式 代理模式指的是通過創建一個代理來控制對原始對象的訪問。代理在客戶端與實際對象之間充當“中介” 特點 訪問控制&#xff1a;代理對象可以控制對實際對象的訪問&#xff0c;從而實現對訪問權限的控制。延遲加載&#xff1a;代理對象可以在實際對象被調…

【算法】常見排序算法(插入排序、選擇排序、交換排序和歸并排序)

文章目錄 前言一、排序概念及常見排序算法框圖1.排序概念2.常見排序算法框圖 二、實現比較排序算法1.插入排序1.1 直接插入排序1.2 希爾排序 2.選擇排序2.1 直接選擇排序2.2 堆排序 3.交換排序3.1 冒泡排序3.2 快速排序3.2.1 hoare版本3.2.2 挖坑法3.2.3 lomuto前后指針 3.3 快…

Go語言分布式鎖實戰:dlock助力構建高并發穩定系統

在構建分布式系統時&#xff0c;一個常見且棘手的問題便是資源競爭和數據一致性問題。分布式鎖作為一種常用的解決方案&#xff0c;在多個進程或節點之間協調訪問共享資源時顯得尤為重要。今天&#xff0c;我們將介紹一款分布式鎖庫——dlock&#xff0c;并通過詳細的使用示例帶…

算法方法快速回顧

&#xff08;待修改&#xff09; 目錄 1. 雙指針2. 滑動窗口理論基礎 3. 二分查找3. 二分查找理論基礎 4. KMP5. 回溯算法6. 貪心算法7. 動態規劃7.1. 01背包7.2. 完全背包7.3. 多重背包 8. 單調棧9. 并查集10. 圖論10.1. 廣度優先搜索&#xff08;BFS&#xff09;10.2. 深度優…

深度學習:讓機器學會“思考”的魔法

文章目錄 引言&#xff1a;從“鸚鵡學舌”到“舉一反三”一、深度學習是什么&#xff1f;1. 定義&#xff1a;機器的“大腦”2. 核心思想&#xff1a;從數據中“悟”出規律 二、深度學習的“大腦”結構&#xff1a;神經網絡1. 神經元&#xff1a;深度學習的基本單元2. 神經網絡…

電動自行車/電動工具鋰電池PCM方案--SH367003、SH367004、SH79F329

在消費電子系統中&#xff0c;如手機電池包&#xff0c;筆記本電腦電池包等&#xff0c;帶有控制IC、功率MOSFETFE管以及其他電子元件的電路系統稱為電池充放電保護板Protection Circuit Module &#xff08;PCM&#xff09;&#xff0c;而對于動力電池的電池管理系統&#xff…

補碼詳細分析

補碼引入 舉一個生活化的例子 假設由一個掛鐘&#xff0c;它只能順時鐘調時間&#xff0c;那么它調時間就分成了一下兩種情況 正好順時針調就能調好 如&#xff1a;時針從5調到9需要逆時針調才能調好 如&#xff1a;時針從10調到7 在上面的情況中1是不用處理的&#xff0c;2…

計算機網絡入門:物理層與數據鏈路層詳解

&#x1f310; &#xff08;專業解析 中學生也能懂&#xff01;&#xff09; &#x1f4d6; 前言 計算機網絡就像數字世界的“高速公路系統”&#xff0c;而物理層和數據鏈路層是這條公路的基石。本文用 專業視角 和 生活化比喻 &#xff0c;帶你輕松理解這兩層的核心原理&a…

哪些視頻格式在webview2中播放可以設置成透明的?

在WebView2中&#xff0c;能夠播放并設置成透明背景的視頻格式主要取決于其支持的編解碼器以及視頻是否包含alpha通道&#xff08;透明度信息&#xff09;。以下是支持透明背景的視頻格式&#xff1a; 支持透明背景的視頻格式 1. WebM&#xff08;使用VP9編解碼器&#xff09; …

【基于ROS的A*算法實現路徑規劃】A* | ROS | 路徑規劃 | Python

### 記錄一下使用Python實現ROS平臺A*算法路徑規劃 ### 代碼可自取 &#xff1a;Xz/little_projecthttps://gitee.com/Xz_zh/little_project.git 目錄 一、思路分析 二、算法實現 三、路徑規劃實現 一、思路分析 要求使用A*算法實現路徑規劃&#xff0c;可以將該任務分為三…

2025-03-23 吳恩達機器學習3——多維特征

文章目錄 1 多元引入2 矢量化2.1 示例2.2 非矢量化實現2.3 矢量化實現2.4 應用 3 特征縮放3.1 舉例3.2 必要性3.3 方法3.3.1 最大最小值縮放&#xff08;Min-Max Scaling&#xff09;3.3.2 均值歸一化&#xff08;Mean Normalization&#xff09;3.3.3 Z 分數歸一化&#xff08…

正點原子內存管理學習和修改

由于項目需要用到內存管理進行動態申請和釋放&#xff0c;今天又重新學習了一下正點原子的內存管理實驗&#xff0c;溫習了一下內存管理的實質。首先先上正點原子內存管理的源代碼&#xff1a; malloc.c文件&#xff1a; #include "./MALLOC/malloc.h"#if !(__ARMC…