python路径长度限制,Linux下文件名长度限制

Linux下文件名长度限制

出现场景:在迭代中有一个需求是将pdf文件名修改为所有班级的名称集合,出现的班级过多导致的文件名过长在linux下无法创建文件和文件夹的情况

解决方式:经过查证,linux中文件名最长为255字符,文件路径最大长度为4096字符。所以需要对班级名称进行截断,并且不仅仅是根据字符串长度截断,而是根据每一个字母或者汉字对应的字符来计算得到最后的文件名小于255个字符。

鉴于以上场景,于是进行稍微的深究,对字符编码相关的知识进行了一个深一步的学习

字符

简介:字符简单的来说就是我们日常生活中用到的一些字符,比如数字、汉字、标点符号等。专业的介绍可以参考百度百科)

字节

简介:计算机中的一个计量存储容量的单位,常见的计算机中一个字节代表八位的二进制数

编码

简介:其实 编码 就是将字符转为二进制的规则,因为我们知道计算机是通过 高电平 和 低电平 来分别代表 1 和 0,想让计算机读懂我们的字符,就需要将 二进制数 和我们的字符建立一个映射关系,这个过程就叫编码。其实每个人都可以定义自己的编码规则,但是这样就乱套了。所以一些组织就制定了统一的编码规则。也就出现了我们常见的 ASCII 、unicode 等编码规则

字符集

ASCII(字符集):建立了128个字符对应的数字编号,仅支持英文字母、一些标点符号、以及一些不可显示的字符。

unicode (万国码 字符集):Unicode只是一个用来映射字符和数字的标准。它对支持字符的数量没有限制,也不要求字符必须占两个、三个或者其它任意数量的字节。Unicode并不涉及字符是怎么在字节中表示的,它仅仅指定了字符对应的数字。归根结底,unicode就是把世界上所有的字符都和一个数字做对应,但是具体到这个数字在计算机中如何表示,他是不管的。

关于Unicode的其它误解包括:Unicode支持的字符上限是65536个,Unicode字符必须占两个字节,这些都不正确。

Unicode字符是怎样被编码成内存中的字节这是另外的话题,它是被UTF(Unicode Transformation Formats)定义的。

unicode的问题:比如,汉字严的 Unicode 是十六进制数4E25,转换成二进制数足足有15位(100111000100101),也就是说,这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。

这里就有两个严重的问题,第一个问题是,如何才能区别 Unicode 和 ASCII ?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果 Unicode 统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。于是出现了对unicode字符集的不同的编码方式

常见的编码规则

ASCII码的编码规则:每个二进制位(bit)有 0 1 两个状态,因此八个二进制位就能够组成 256 种不同的状态,也就是 00000000 - 11111111,由于ASCII字符集定义了128个字符,八个二进制位能够表达 256 个状态,所以肯定是够用了,所以在 ASCII 码中一个字符只占一个字节(一个字节 === 8 bit)

UTF-8:是一种unicode的编码方案,在UTF-8中,0-127号的字符用1个字节来表示,使用和US-ASCII相同的编码。这意味着1980年代写的文档用UTF-8打开一点问题都没有。只有128号及以上的字符才用2个,3个或者4个字节来表示。因此,UTF-8被称作可变长度编码,它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

UTF-16:另一个流行的可变长度编码方案是UTF-16,它使用2个或者4个字节来存储字符。

javascript中的字符编码

js中用的编码方式不是UTF-8、UTF-16。而是 UCS-2,具体原因是因为javascript诞生的时候,还没有UTF-16,但是好在UCS的码点和unicode一致,所以他们是互相兼容的。两者的关系简单说,就是UTF-16取代了UCS-2,或者说UCS-2整合进了UTF-16。所以,现在只有UTF-16,没有UCS-2。

总结:

Unicode是一个简单的标准,用来把字符映射到数字上。Unicode协会的人会帮你处理所有幕后的问题,包括为新字符指定编码。

Unicode并不告诉你字符是怎么编码成字节的。这是被编码方案决定的,通过UTF来指定。

这个世界上从来没有纯文本这回事,如果你想读出一个字符串,你必须知道它的编码

字符集和编码是不同的,字符集是指定的数字和字符的映射,而编码则是将指定的字符对应的数字存储在计算机中的过程。

编码是很复杂的过程,其中涉及到的砖码,基本平面,辅助平面等概念在本文中都没有提到,具体的实现过程可以参考下面的阮一峰相关的资料。

参考资料:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio 2022 预览版2 发布啦

我们很高兴地宣布 Visual Studio 2022 的第二个预览版发布啦!预览版 1 是有史以来第一个 64 位 Visual Studio,提供了改进的可扩展性。从预览版 2 开始,我们专注于提供有关个人和团队生产力、现代开发和不断创新等主题的新功能。在本文中&…

批作业是小学老师的一大乐趣 | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅

【小安翻唱】凉宫春日的忧郁--冒険でしょでしょ第五届外语歌曲大赛助兴节目~绫魂论坛送aya的生日礼物筹备开始~...

第五届外语歌曲大赛如火如荼的进行的听了那么多参赛选手的歌曲自己也不由的也想唱唱正好遇上绫魂论坛的各位管理员为aya筹备生日礼物 好吧~ 我也来小唱一首 小小的final版送上~(非正式版 请无视错词和中间以及最后的杂音 灭哈哈) 顺便再借用了一下某位选…

免费电影下载

迅雷资源,速度稳定.我一直都在用..好东西不能一个人独享,拿出来分享..菜熊视讯最大的影视迅雷下载站!完全免费,并且每天还大批量更新![url]http://www.caixiong.com/?445419.htm[/url]转载于:https://blog.51cto.com/douvip/12485

进入51cto之后的发展方向

这里是个不错的学习环境,值得珍惜。来到这里,我发现这里正是我梦寐以求的学习之天堂,这里可以肆无忌惮的贪婪的学习,可以感受到融洽的美好的氛围。我很愉快的开通的博客,并且珍惜这一次难得的机会去疯狂学习。我要确定…

oracle中文加密算法,Oracle数据库替代加密算法

替代密码算法的原理是使用替代法进行加密,就是将明文中的字符用其它字符替代 后形成密文。例如:明文字母a、b、c、d ,用D、E、F、G做对应替换后形成密文。这里在Oracle的存储过程,通过替换加密算法来实现密码存入数据库时的加密。…

.net中单元测试

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类&…

WCF后续之旅(11): 关于并发、回调的线程关联性(Thread Affinity)

对于一般的多线程操作,比如异步地进行基于文件系统的IO操作;异步地调用Web Service;或者是异步地进行数据库访问等等,是和具体的线程无关的。也就是说,对于这些操作,任意创建一个新的线程来执行都是等效的。…

成年人改变生活的方式,都是从它开始

全世界只有3.14 % 的人关注了青少年数学之旅2019已经不足80天,年初立下的flag倒了几个?史蒂夫马丁有一句话:“所有的人生谜语都可以从阅读中找到答案。”无论是读影评、读好书,亦或者涉猎趣闻轶事、汲取犀利观点,总会悄…

组策略链接顺序优先级

“链接顺序”最低的 GPO 最后处理,因此具有最高的优先级。

oracle体系结构和组件图示,Oracle 体系结构组件

Oracle数据库主要由两大组件构成:实例:进程与内存结构。数据库:操作系统文件。实例是我们访问数据库的接口。一个实例只能打开一个数据库。当你用SQLPlus或其它的客户端工具去连接Oracle数据库时,你的客户端进程与服务器端进程通讯…

Request.ServerVariables的详细应用(转)

Request.ServerVariables应用 【摘 要】本文详细介绍关于学习ASP知识之Request.ServerVariables应用的文章专题。本机ip:<%request.servervariables("remote_addr")%>服务器名:<%Request.ServerVariables("SERVER_NAME")%>服务器IP:<%Requ…

uiview生命周期

在viewDidAppear方法中做了一段页面开始的动画&#xff0c;但是动画效果在横屏是没有问题的&#xff0c;在竖屏轨迹总是不对。解决方法执行顺序的问题&#xff0c;页面的加载顺序是2011-11-04 13:48:21.290 jjj[4048:707] viewDidAppear2011-11-04 13:48:21.291 jjj[4048:707] …

表白和被表白时遇到的骚操作,最后一个天秀!| 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅【1】【2】【3】【4】【5】【6】【7】【8】【9】

oracle中的的instr,Oracle中instr函数使用方法

举例&#xff1a;scenarioinfo 中有60条数据&#xff0c;其中字段ywwd不为空的有40条(其中包含“积分”的有30条)&#xff0c;字段ywwd为空的有20条。查询scenarioinfo 表中字段ywwd包含“积分”的语句(返回30条数据)&#xff1a;select id, ywwd from scenarioinfo where inst…

这么简单的序列化 System.Text.Json.Serialization 也报错了?

咨询区 kofifus&#xff1a;我准备将项目中的 JSON.NET 切换到原生的 System.Text.Json&#xff0c;但我遇到了个意外报错&#xff0c;测试代码如下&#xff1a;using System.Text.Json.Serialization; using Newtonsoft.Json;public class C {public C(string PracticeName) {…

直观机械动图,一秒看懂原理!

全世界只有3.14 % 的人关注了青少年数学之旅这些神奇唯美的机械动图&#xff0c;让我们不得不感叹制造的魅力&#xff01;仿生四翼飞行机器人▲单手磁性拉链▲风洞实验——模拟飞机飞行▲可以说是最快的折弯机了▲这是谁设计的死循环▲高压水除锈▲摩擦焊接▲打地洞▲能轻松把车…

数据校验器架构模式组

刘 岳林 (yuelin_liumsn.com), 软件工程师2007 年 1 月 15 日本文阐述软件架构与设计模式&#xff0c;它为架构师和开发人员提供了一组关于数据校验的架构模式&#xff08;隔离校验器&#xff0c;可组装校验器&#xff0c;动态策略校验器&#xff0c;动态注册校验器等&#xff…

nobelking 3 js 数字和数字相加 字符串连接 数字和字符串连接1

以下结果是在IE8的测试结果我只测试了变量相加&#xff0c;还没测试变量和常量1.当两个变量&#xff08;已经赋初值 &#xff09;用“”连接&#xff0c;如果含有至少一个为字符串 &#xff0c;无论两个字符串是否定义时有var或者有一个有var&#xff0c;则结果必定为字符串。2…

罗斯文2007(Northwind 2007)数据库、Access 2007 样列数据库分析[转]

Northwind 2007 是 MS 的一套销售类样列库&#xff0c;本片文章主要描述&#xff0c;它的结构及关系。 起因:   前些阵子一直想做一个虚拟项目来学习巩固一下 .net3.0 的一些新技术、为什么要做虚拟项目&#xff1f; 当然是系统的学习一些东西了、我对虚拟项目的要求是不能太…