一個批量文件Dos2Unix程序(Microsoft Store,開源)1.1.0 編碼檢測和預覽

? ? ? ? 之前的版本是個意思意思,驗證商店發布的(其實是我以前自己用的工具),這次把格式檢查和轉換都做上了,功能應該差不多了,還有一些需要小改進的地方。

? ? ? ? 因為還沒什么用戶嘛,還是保持全功能免費試用。(真的是為了交個朋友)

目錄

一、從Microsoft Store安裝

二、從github獲取源碼

三、運行

四、新增功能

4.1 預覽和編碼選擇

4.2 輸出格式選擇

4.3 編碼保存

五、關于文本格式的知識

5.1 行結束符

5.2 字符編碼

5.3 字符格式

5.4 BOM

5.5 代碼頁


一、從Microsoft Store安裝

? ? ? ? Microsoft Store下載鏈接:ctDos2Unix - Download and install on Windows | Microsoft Store

? ? ? ? 打開此網頁,從這里進入商店,可以免費安裝試用版(網頁里可能不會顯示“免費試用”),試用版沒有期限并且和正式版沒有區別(不理解是吧,這是我用來做應用上架練習的。)

二、從github獲取源碼

codetoys/Dos2Unix: txt tools ,Encoding conversion
https://github.com/codetoys/Dos2Unix?

? ? ? ? 當然,此源碼不包含用來打包MSIX的項目,僅包含程序本身的源碼。

? ? ? ? 簡單程序,只有一個exe文件,依賴.net framework 4.8,應該不用額外安裝。

? ? ? ? 程序僅保存一個屬性,具體保存在哪里你要看Properties.Settings.Default.Save()怎么回事了(一般在AppData的Local下面)。

? ? ? ? 用visual studio 2022打開sln文件即可。

三、運行

????????安裝后會有個開始菜單項(Microsoft Store的標準行為),直接編譯源代碼就是直接運行就行了。

? ? ? ? 試用版和正式版唯一的區別是標題欄上顯示的是“試用版”。

四、新增功能

4.1 預覽和編碼選擇

? ? ? ? 界面分三部分:列表顯示區、預覽區、按鈕區。

????????點擊按鈕“瀏覽”選擇一個目錄,會把目錄里的所有文件都顯示在左邊列表中,列表的選中項在中間的預覽區自動顯示預覽。

????????默認根據檢測到的編碼顯示,如果有亂碼(有些編碼無法自動檢測),可以手動指定編碼。

????????也可以顯示二進制。二進制顯示盡量根據檢測到的編碼來處理回車換行,要注意回車和換行都會導致換行顯示,這一點與文本顯示方式不同。

4.2 輸出格式選擇

? ? ? ? 可以選擇DOS/UNIX/MAC行尾格式,可以選擇添加BOM或刪除BOM,這兩個選項都可以選擇“保持原樣”,不做改變。

4.3 編碼保存

? ? ? ? 使用指定的編碼直接保存。注意這個功能現在是沒有自動備份的,我下個版本加上。

五、關于文本格式的知識

5.1 行結束符

? ? ? ? DOS(Windows)在內存中使用一個“\n”表示換行,存儲到文件則為“\r\n”。UNIX(Linux)則為“\n”,Mac(蘋果電腦)卻是“\r”,真是想不通。

? ? ? ? 因為這種區別,ftp工具一般都有指定那些文件后綴名是文本文件的設置,以此來自動識別文件文件,供傳輸時做格式轉換。當然ftp工具也有強制使用二進制或文本模式的功能。

? ? ? ? 一般我們自己寫程序讀文件這幾種行結束符都兼容,因為多了判斷,效率稍低。

? ? ? ? 而系統提供的行讀取函數則不兼容不同的行結束符,因此可能會導致錯誤。

? ? ? ? 像我們程序員經常在網上復制粘貼代碼的,文件里行結束符不一致的情況也很多,這都可能出問題。

? ? ? ? 所以批量檢測、轉換文件格式是很重要的。

5.2 字符編碼

? ? ? ? 字符編碼最初是面向硬件的啊!一個編碼輸出給一個硬件,硬件就顯示一個字符給你看,所以一種編碼其實是對統一標準的硬件的。后來ASCII碼成了英文字符的主流。最初沒有中文啊。

? ? ? ? 后來就有了中文顯示了,因為ASCII只用了每個字節的低七位,最高位總是0,所以中文等語言選擇使用最高位為1來編碼,用連續兩個字節表達一個本地字符。這樣就兼容ASCII碼,純ASCII文件可以正常顯示,含有本地編碼字符的文件在純英文系統上會亂碼。

? ? ? ? 這種本地編碼大家都選擇了類似的方式,雖然方便但是本地編碼之間互相交流成了問題。因為編碼規則一樣嘛,但是同一個本地編碼(兩個高位為1的字節)含義完全不相干,顯示為亂碼的時候你只能瞎猜,一個一個試過去,湊巧對了就不亂碼了(但是你不認識的語言也容易猜測是不是對了)。

? ? ? ? 中文分為國標和大五兩個系列,GB后面數字大的是較新的版本,兼容數字小的。GB2312已經過時了,但是大家還是習慣叫這個。

? ? ? ? 本地編碼非常不利于國際交流嘛,所以大家坐到一起商量了一下,搞了個大一統的UNICODE,宇宙字符集。宇宙字符集把所有現有字符都納入了,而且可以無限擴充。

5.3 字符格式

? ? ? ? 在unicode出現以前,字符都是單字節,本地編碼用兩個連續字符表示一個字符(所以支持的字符數是有限的),計算字符數(不是字節數)需要一個字節一個字節判斷,比較麻煩。

? ? ? ? unicode出現以后情況有所不同,因為大部分UNICODE字符兩字節就可以表達,于是就想啊,用unsigned short int來表達字符會不會簡單啊,這樣基本上一個unsigned short int就是一個字符,計算比較簡單(雖然不是絕對,但應付大部分情形是沒問題的),這個就是UTF-16,windows內核表達方法。

? ? ? ? unicode其實有多種字符格式。

????????utf-7只用每個字節的低七位,要連續多個字節來表達一個字符,這種格式現在很少見到了。

? ? ? ? utf-8與本地編碼類似,兼容ASCII,但是又容易和本地編碼混。不過utf-8每個字節前幾位是有規定的,指示了字符包含幾個字節,這樣比較容易檢測(本地編碼除了最高位為1沒有別的標志)。

? ? ? ? utf-32用unsigned int來表達字符,基本上現有的字符都是一個unsigned int,太完美了。但是要多用很多字節啊。

5.4 BOM

? ? ? ? BOM就是文件最前面用來指示格式的特殊標記。

? ? ? ? 為什么要有這個呢?因為對于utf-16和utf-32,使用short 和int來表示字符,同一個short或int在不同字節順序的機器上是不一樣的,所以需要有一個標記來指示。

? ? ? ? 因為這個東西沒有統一規范,windows有,unix沒有,混亂就這樣形成了。

? ? ? ? windows還給utf-8也弄了一個BOM。憑良心說呢,大家都有BOM的話,確實減少很多混亂。但是沒法子,現實無比混亂啊。

5.5 代碼頁

? ? ? ? 代碼頁就是上面說的字符編碼和字符格式的組合(各種本地編碼和不同格式的unicode),但是不包含是否包含BOM(也就是說windows上默認都是帶的)。


(這里是文檔結束)

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

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

相關文章

特征提取:如何從不同模態中獲取有效信息?

在多模態學習中,不同模態(文本、圖像、語音、視頻、傳感器數據等)所攜帶的信息豐富且互補。但不同模態的數據結構、表示空間、時空分布截然不同,因此,如何對各模態進行高效、有效的特征提取,是整個多模態學…

Go語言爬蟲系列教程 實戰項目JS逆向實現CSDN文章導出教程

爬蟲實戰:JS逆向實現CSDN文章導出教程 在這篇教程中,我將帶領大家實現一個實用的爬蟲項目:導出你在CSDN上發布的所有文章。通過分析CSDN的API請求簽名機制,我們將繞過平臺限制,獲取自己的所有文章內容,并以…

交叉熵損失函數,KL散度, Focal loss

交叉熵損失函數(Cross-Entropy Loss) 交叉熵損失函數,涉及兩個概念,一個是損失函數,一個是交叉熵。 首先,對于損失函數。在機器學習中,損失函數就是用來衡量我們模型的預測結果與真實結果之間…

149.WEB滲透測試-MySQL基礎(四)

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動! 內容參考于: 易錦網校會員專享課 上一個內容:148.WEB滲透測試-MySQL基礎(三) 非關系型數據庫: &a…

c/c++中程序內存區域的劃分

c/c程序內存分配的幾個區域: 1.棧區:在執行函數時,函數內局部變量的存儲單元都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放,棧內存分配運算內置于處理器的指令集中,效率很高但是分配的內存容量有…

構建穩定的金字塔模式生態:從自然法則到系統工程

在自然界中,金字塔結構廣泛存在于生態系統之中,表現為營養級能量金字塔、生物量金字塔和數量金字塔等形式。這種結構不僅形象地描述了生態能量流轉的規律,也體現出生態系統中“穩定性”與“層級性”的天然法則。在現代軟件架構、企業組織、平…

Vue 3.0雙向數據綁定實現原理

Vue3 的數據雙向綁定是通過響應式系統來實現的。相比于 Vue2,Vue3 在響應式系統上做了很多改進,主要使用了 Proxy 對象來替代原來的 Object.defineProperty。本文將介紹 Vue3 數據雙向綁定的主要特點和實現方式。 1. 響應式系統 1.1. Proxy對象 Vue3 …

TIP-2021《SRGAT: Single Image Super-Resolution With Graph Attention Network》

推薦深藍學院的《深度神經網絡加速:cuDNN 與 TensorRT》,課程面向就業,細致講解CUDA運算的理論支撐與實踐,學完可以系統化掌握CUDA基礎編程知識以及TensorRT實戰,并且能夠利用GPU開發高性能、高并發的軟件系統&#xf…

大語言模型與多模態模型比較

一、核心差異:輸入數據類型與模態融合 輸入數據類型 LLM:僅處理文本數據,例如文本分類、機器翻譯、問答等任務,通過大規模語料庫學習語言規律。 LMM:支持文本、圖像、音頻、視頻等多種模態輸入,例如根據圖…

Apache HttpClient 5 用法-Java調用http服務

Apache HttpClient 5 核心用法詳解 Apache HttpClient 5 是 Apache 基金會推出的新一代 HTTP 客戶端庫&#xff0c;相比 4.x 版本在性能、模塊化和易用性上有顯著提升。以下是其核心用法及最佳實踐&#xff1a; 一、添加依賴 Maven 項目&#xff1a; <dependency><…

基于 Spark 的流量統計

一、引言 在互聯網行業&#xff0c;流量統計是分析網站或應用用戶行為、評估業務表現、優化資源分配以及制定營銷策略的關鍵環節。借助 Apache Spark 強大的分布式數據處理能力&#xff0c;我們可以高效地對大規模的流量數據進行統計分析&#xff0c;獲取有價值的洞察。本文將…

Python模塊化編程進階指南:從基礎到工程化實踐

一、模塊化編程核心原理與最佳實踐 1.1 模塊化設計原則 根據企業級項目實踐&#xff0c;模塊化開發應遵循以下核心原則&#xff1a; ??單一職責原則??&#xff1a;每個模塊只承擔一個功能域的任務&#xff08;如用戶認證模塊獨立于日志模塊&#xff09;??接口隔離原則…

銳捷交換機STP環路日志信息解讀

因公司網絡組建使用銳捷全系列交換機&#xff0c;近期設備巡檢時發現部分日志提示信息&#xff0c; 接入交換機NBS3100-24GT4SFP-V2&#xff0c;設備頻繁打出STP Blocking的日志信息。 誤以為是環路導致&#xff0c;故進行實驗測試&#xff0c;來驗證環路情況下會如何報日志。…

使用Python調用DeepSeek的示例

使用Python調用DeepSeek API的示例代碼,包括API密鑰的獲取、基本請求的發送以及響應處理。請確保你已經注冊了DeepSeek賬號并獲取了API密鑰。 文章目錄 前言一、獲取API密鑰二、python示例代碼三、代碼說明四、注意事項五、擴展功能總結前言 提示:這里可以添加本文要記錄的大…

mysql的not exists走索引嗎

在MySQL中&#xff0c;?NOT EXISTS子句是否使用索引取決于子查詢中關聯字段是否建立了合適的索引。以下是關鍵點總結&#xff1a; ?索引的作用?&#xff1a; 當子查詢的關聯字段&#xff08;例如B.a_id&#xff09;存在索引&#xff08;如普通B-tree索引&#xff09;時&…

Python線性回歸:從理論到實踐的完整指南

Python線性回歸&#xff1a;從理論到實踐的完整指南 線性回歸是數據科學和機器學習中最基礎且最重要的算法之一。本文將深入探討如何使用Python實現線性回歸&#xff0c;從理論基礎到實際應用&#xff0c;幫助讀者全面理解這一重要的統計學和機器學習方法。 什么是線性回歸&a…

鴻蒙OSUniApp 實現的二維碼掃描與生成組件#三方框架 #Uniapp

UniApp 實現的二維碼掃描與生成組件 前言 最近在做一個電商小程序時&#xff0c;遇到了需要掃描和生成二維碼的需求。在移動應用開發中&#xff0c;二維碼功能已經成為標配&#xff0c;特別是在電商、社交和支付等場景下。UniApp作為一個跨平臺開發框架&#xff0c;為我們提供…

Westlake-Omni 情感端音頻生成式輸出模型

簡述 github地址在 GitHub - xinchen-ai/Westlake-OmniContribute to xinchen-ai/Westlake-Omni development by creating an account on GitHub.https://github.com/xinchen-ai/Westlake-Omni Westlake-Omni 是由西湖心辰&#xff08;xinchen-ai&#xff09;開發的一個開源…

uv python 卸載

又是查了半天 官網wiki沒有 網上一堆傻子胡說 uv提示也不對 AI還在這尼瑪胡編亂造 開始 我原來裝了這幾個環境 uv python list 現在python3.7.7不需要了&#xff0c;卸載&#xff0c;直接 uv python uninstall 3.7.7 去找你自己要卸載的版本號&#xff0c;不需要整個包名復制…

使用哈希表封裝myunordered_set和myunordered_map

文章目錄 使用哈希表封裝myunordered_set和myunordered_map實現出復用哈希表框架&#xff0c;并支持insert支持迭代器的實現constKey不能被修改unordered_map支持[ ]結語 我們今天又見面啦&#xff0c;給生活加點impetus&#xff01;&#xff01;開啟今天的編程之路&#xff01…