fix: handle special characters in paths and git snapshot reading logic(#9804) (#9807)

This commit is contained in:
shirukai
2026-01-21 18:35:23 +08:00
committed by GitHub
parent d6caaee816
commit cf6ad4c407
2 changed files with 94 additions and 14 deletions

View File

@@ -195,7 +195,20 @@ export const { use: useFile, provider: FileProvider } = createSimpleContext({
const root = directory()
const prefix = root.endsWith("/") ? root : root + "/"
let path = stripQueryAndHash(stripFileProtocol(input))
let path = input
// Only strip protocol and decode if it's a file URI
if (path.startsWith("file://")) {
const raw = stripQueryAndHash(stripFileProtocol(path))
try {
// Attempt to treat as a standard URI
path = decodeURIComponent(raw)
} catch {
// Fallback for legacy paths that might contain invalid URI sequences (e.g. "100%")
// In this case, we treat the path as raw, but still strip the protocol
path = raw
}
}
if (path.startsWith(prefix)) {
path = path.slice(prefix.length)
@@ -218,7 +231,8 @@ export const { use: useFile, provider: FileProvider } = createSimpleContext({
function tab(input: string) {
const path = normalize(input)
return `file://${path}`
const encoded = path.split("/").map(encodeURIComponent).join("/")
return `file://${encoded}`
}
function pathFromTab(tabValue: string) {