处理路径长度的问题

2024-03-20

我正在创建一个库,用于在 Linux 和 Windows 上进行文件操作。所以我需要处理路径,主要要求是我的函数将接收 UTF8 格式的字符串。但这会导致一些问题,其中之一是我正在使用MAX_PATH在窗户上和PATH_MAX在linux中,表示静态路径变量。在 ASCII 字符的情况下不会有问题,但是当路径包含 unicode 字符时,如果 unicode char 需要每个字符 2 个字节,则路径长度将缩短两倍,如果 unicode char 需要每个字符 3 个字节,则路径长度将缩短 3 倍,依此类推。那么这个问题有没有好的解决办法呢?

提前致谢!

附注对不起我的英语不好。


至少在 Linux 上,您的担心似乎是多余的。 Linux(以及一般的 POSIX)将路径视为以“\0”结尾的不透明字节块。它不关心如何将这些字节转换为字符。也就是说,PATH_MAX 指定路径名的最大长度(以字节为单位),而不是以字符为单位。

因此,如果路径名包含 >= 0 个多字节 UTF-8 字符,则仅意味着最大路径长度(以字符为单位)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理路径长度的问题 的相关文章

随机推荐

  • 从 PHP 执行 Powershell 脚本

    我正在尝试从 PHP 执行 powershell 脚本 但它似乎不起作用 脚本 newEvent ps1 在 Exchange 服务器上创建一个事件 psPath powershell exe psDIR C wamp www ant as
  • PowerMock、mockito、验证静态方法

    我正在尝试让 PowerMock 与mockito一起使用 并且我正在关注此处的文档 http code google com p powermock wiki MockitoUsage13 http code google com p p
  • 我在 ejabberd (17.07) 上的 Android 设备上尝试使用 smack api(4.2) 注册用户时遇到错误

    我试图找出错误的原因 但找不到 如果有人可以提出一种方法 我们将不胜感激 早些时候我使用的是带有默认 mnesia 的 ejabberd 2 1 版本 运行良好 我能够从 Android 应用程序注册用户 但是现在当我用mysql安装新的e
  • Jenkins 声明式管道:矩阵构建轴的顺序执行

    我正在尝试建立一个矩阵构建并遇到几个问题 矩阵看起来像 stage BuildAll matrix axes axis name PLATFORM values win32vc9 win32vc19 axis name VARIANT va
  • 如何使用 Mockito 2 在 java/android 测试下模拟最终类?

    Final classes can be mocked under java test when I define in gradle testCompile org mockito mockito inline 如何在java andro
  • Django 测试并行 AppRegistryNotReady

    我试图了解如何与内存中的 sqlite3 并行运行 django 测试 我有具有该结构的 django 应用程序 gbook order tests init py test a1 py test b1 py utils py test a
  • 多次调用ToList会影响性能吗?

    我经常看到调用 ToList 会使查询每次都被执行 我对此有点困惑 那么在这种情况下 第二次调用 ToList 会使查询执行多次吗 在什么情况下查询会执行多次 This gets from database and ToList is al
  • .toLocaleString('fr-FR') 不显示空格数量,但在控制台中工作

    我使用 PHP 显示来自服务器的一些价格和数字 使用函数以法语进行格式化 然后我想使用Jquery在客户端做一些计算 我使用 toLocaleString fr FR 来格式化要显示的结果 它可以在控制台中运行 但不能在 DOM 中运行 这
  • 如何重用一些“Eclipse IDE 插件”创建 Eclipse RCP 应用程序?

    如何创建一个 RCP 应用程序 它看起来与 Eclipse IDE 完全相同 具有所有菜单 视图 对话框 这是一个例子 http richclientplatform blogspot com 2007 12 oil and gas ind
  • 显示内 100% 高度的 div:table-cell div

    我试图将 100 高度的 div 放入 display table cell div 中 但它似乎在 IE 中不起作用 IE 有什么解决办法吗 这是我的代码 div style display table row div style dis
  • 在“视图”中使用 ng-init 的替代方案?

    我正在尝试为我的应用程序创建一个 喜欢 功能 我希望能够将动态生成的数字的值设置为 喜欢计数 问题出在使用 ng init 因为文档说这是一个糟糕的方法 如何在 控制器 而不是 视图 中设置值 这是我到目前为止所拥有的
  • 使用触发器将源代码从云构建发布到存储桶时出错

    我正在尝试通过云构建触发器将 html 代码从一个云源存储库发布到 gcp 中的公共存储桶 但是 每次推送到主分支时 我都会在构建中收到以下错误 generic invalid argument generic invalid argume
  • iOS 音量控制的最佳实践?

    硬件音量控制 我试图了解对于大多数静音但偶尔发出声音的应用程序的最佳实践是什么 此类应用程序可以利用 iOS 设备上的侧面音量控制 并避免需要在 NSVolume 控件小部件中进行设计 我认为这不如硬件侧面音量控制那么方便 该方法适用于 M
  • Ninject InRequestScope 缺失

    有几个关于 ninject 最新版本 2 2 1 4 的问题 正在尝试绑定 Linq2sqlDataContext到具体实施InRequestScope 在类库项目中 Bind
  • 在动态控件的 GridView 中找不到控件

    我有一个网格视图 我在运行时将文本框添加到每个单元格 但是 我似乎无法使用访问这些控件findcontrol 以下是我将文本框添加到网格视图的方法 If e Row RowType DataControlRowType DataRow Th
  • 对象是引用类型还是值类型?

    我仍然有疑问object 它是任何事物 任何类的主要基类 但它是引用类型还是值类型 或者喜欢这些行为中的哪一个呢 我需要澄清这一点 我很难理解这一点 object obj1 OldString object obj2 obj1 obj1 N
  • 更改视图、plot3D、Julia 语言(类似于 matplotlib)

    我正在尝试改变 3D 散点图的视角 朱莉娅语言 例如 此代码更改了视角 但每次更改时都会单独绘制点 而不是一起绘制 for i 1 10 X i Y i 2 Z i 3 fig figure ax gca projection 3d plo
  • 在 Spring Boot 中从属性文件注入值数组

    好的 所以我有一个config properties market curpairs 0 name EuroDollar market curpairs 0 symbol EURUSD market curpairs 0 minamount
  • Ryacas 的符号矩阵乘法

    我定义两个矩阵mat1 and mat2 in Sym适合 Ryacas 符号计算的类 library Ryacas x lt Sym x mat1 lt List List x 2 List x 3 x and mat2 lt List
  • 处理路径长度的问题

    我正在创建一个库 用于在 Linux 和 Windows 上进行文件操作 所以我需要处理路径 主要要求是我的函数将接收 UTF8 格式的字符串 但这会导致一些问题 其中之一是我正在使用MAX PATH在窗户上和PATH MAX在linux中