当前位置: 首页 > Linux

Linux下文件名长度限制

时间:2023-04-06 05:39:25 Linux

Linux下文件名长度限制的出现:在迭代中有一个需求,将pdf文件的名字改为所有类名的集合。Linux下类太多会导致文件名太长无法创建文件和文件夹情况的解决方法:经验证,Linux下文件名的最大长度为255个字符,文件的最大长度路径是4096个字符。所以需要对类名进行截断,不仅要按照字符串的长度截断,还要按照每个字母或汉字对应的字符小于255个字符来计算最终的文件名。针对以上场景,我进行了一点深入的研究,对字符编码相关的知识进行了进一步的学习。字符介绍:字符简单来说就是我们日常生活中使用的一些字符,比如数字、汉字、标点符号等。专业介绍请参考百度百科)字节介绍:计算机中衡量存储容量的单位。在普通计算机中,一个字节代表一个八位的二进制数编码。我们知道,计算机分别通过高电平和低电平来表示1和0。如果我们想让计算机理解我们的字符,就需要在二进制数和我们的字符之间建立映射关系。这个过程称为编码。其实每个人都可以定义自己的编码规则,但是这样就乱七八糟了。因此,一些组织制定了统一的编码规则。也出现了我们常见的ASCII、unicode等编码规则字符集ASCII(characterset):建立了一个对应128个字符的数字,只支持英文字母,部分标点符号,部分不可显示的字符。unicode(universalcodecharacterset):Unicode只是一个映射字符和数字的标准。它对支持的字符数没有限制,也不要求字符占用两个、三个或任何其他字节数。Unicode不处理字符是如何用字节表示的,它只规定了字符对应的数字。归根结底,unicode就是把世界上所有的字符都对应一个数字,而不管这个数字在计算机中是如何表示的。其他对Unicode的误解还有:Unicode支持的字符数上限是65536,Unicode字符必须占两个字节,这是不正确的。Unicode字符在内存中如何编码成字节是另外一个话题,它是由UTF(UnicodeTransformationFormats)定义的。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位)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是一种将字符映射到数字的简单标准。UnicodeConsortium的工作人员将帮助您解决所有幕后问题,包括为新字符分配编码。Unicode不会告诉您字符是如何编码成字节的。这是由UTF指定的编码方案决定的。这个世界上从来没有纯文本这样的东西。如果要读取一个字符串,就必须知道它的编码字符集与编码不同。字符集是指定数字和字符之间的映射,编码是指定字符对应的数字在计算机中存储的过程。编码是一个非常复杂的过程,其中涉及到的砖码、基本平面、辅助平面等概念本文不再赘述。具体实施过程可参考下文阮一峰的相关资料。参考资料:字符编码笔记:ASCII、Unicode和UTF-8阮一峰学点编码知识永不言败:Unicode流言终结者与编码秘诀Javascript基础字符集与编码Unicode与JavaScript详解阮一峰