Windows 與 Linux 檔案名稱與網址長度限制詳解:全型中文字計算方式

7 分鐘閱讀

琳 avatar

以正體中文詳細解說「檔案名稱」以及「網址」的長度限制在 Windows 和 Linux 各是多長,程式設計時以什麼長度為標準為適當,並說明全型中文字的情況時,在各個情況下字數限制如何計算。

Felo Search avatar
Felo Search

根據搜尋結果,我將詳細分析相關問題。

檔案名稱長度限制與程式設計標準

Windows 系統規範

檔案名稱限制

全型中文字處理


Linux 系統規範

檔案名稱限制

全型中文字處理


網址長度限制與設計建議

跨系統共通限制

全型字元處理


程式設計標準與最佳實踐

檔案名稱處理

  1. 跨平台設計
    • Windows:單一元件 ≤255 字元,完整路徑 ≤260 字元(未啟用長路徑時)
    • Linux:單一檔案名 ≤255 位元組,路徑 ≤4,096 位元組143
  2. 全型字元計算
    • 顯示層級:以字元數為基準(1 全型字元 = 1 字元)
    • 儲存層級:UTF-8 編碼需預留 3 倍位元組空間25
  3. 路徑建構工具
    • 使用 pathlib(Python)或 Path(C#)自動處理系統差異
    • 即時驗證:在輸入階段攔截超長名稱(如限制輸入框字數)5

網址處理

  1. 資料傳輸
    • GET 參數:總長度 ≤2,000 字元(含編碼擴充)
    • 檔案下載:避免將檔案路徑直接暴露於 URL67
  2. 編碼轉換
    • 統一使用 encodeURIComponent(JavaScript)或 UrlEncode(C#)處理特殊字元
    • 中文字符預留 9 倍位元組長度67

範例程式碼(JavaScript)

// 計算 UTF-8 位元組數
function countBytes(text) {
  return new TextEncoder().encode(text).length;
}

// 裁切超長字串(保留完整字元)
function truncateByBytes(text, maxBytes) {
  const encoder = new TextEncoder();
  const decoder = new TextDecoder();
  const bytes = encoder.encode(text).slice(0, maxBytes);
  return decoder.decode(bytes).replace(/\uFFFD/g, '');
}

此方案可同時處理中英文混雜情境,確保裁切後不產生亂碼5

一言以蔽之:≤255 bytes
若是單純以字元數來計算,由於中文字元可以佔三個 bytes
保險起見總路徑長度不要超過 85 字元。

  1. Count length of value within a cell with full-width characters ↩2 ↩3 ↩4 ↩5

  2. 為Dropbox 檔案與資料夾命名 ↩2 ↩3

  3. OneFS and Long Filenames | Dell Technologies Info Hub ↩2 ↩3 ↩4 ↩5 ↩6

  4. "Linux has a 255 bytes limitation for file names (this translates ... ↩2 ↩3 ↩4

  5. 前端Javascript 限制input 中英文字數 - Medium ↩2 ↩3 ↩4

  6. 整理:各个浏览器及web服务器对URL(get)长度的限制 ↩2 ↩3 ↩4 ↩5 ↩6 ↩7

  7. URL Length: how long can a URL be? - SISTRIX ↩2 ↩3 ↩4 ↩5 ↩6 ↩7