2016-10-11 83 views
0

有一個與Tcl庫鏈接並正在解析給定的tcl腳本的第三方軟件。 如果是命令,則需要一個文件名或文件名列表。當文件名/路徑中有空格時,扼流器...認爲它是一個名稱列表,即使我將它放在花括號或雙引號中。有沒有辦法編碼Tcl字符串內的空格?

字符串/路徑(空間內)可以用其他Tcl命令仍能正確解釋的方式進行編碼嗎?

+2

你可以嘗試一個反斜槓,或多個反斜槓( 'abc \\ 123')在文件名中。這可能會訣竅。要弄清楚要使用多少個反斜槓很難。但最終,你應該讓第三方庫的維護者修復他們的軟件包。即使您的API將其作爲單個文件名接受,也不能保證其他內部過程能正確處理它。 –

+1

另一種可能性是重命名文件,使用API​​,然後將文件重命名爲原始文件。我用一個不能處理unicode文件名的工具來做這件事。 –

回答

2

以下是在Tcl的一個空間中的標準轉義序列:

  • \」 - 反斜槓後跟一個空格。
  • \040」 - 一個反斜槓後跟一個0八進制爲32
  • \x20」 - 一個反斜槓後跟一個x和32. 兩位十六進制(只有真正適合當下面的字符不是一個十六進制數字,因爲在Tcl中的許多版本的bug)
  • \u0020」 - 一個反斜槓後跟一個u四位十六進制爲32
  • \U000020」 - 反斜槓後跟一個U和32. 六位十六進制

其中之一可能工作(在Tcl的8.6引入遷移路徑的一部分,以支承較新的Unicode字符。)在你的情況。或者如果你用另一個反斜槓引用反斜槓足夠多的次數;在這一點上,你實際上在玩「猜測某人的軟件有多嚴重錯誤」。 (這聽起來像的東西正在經歷一個不明智的eval地方。也許幾次。在不同的代碼路徑可能不同數額。這是可怕如果這是真的......)

相關問題