一个批量文件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.mzph.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…