Search

為什麼無法搜尋以 UTF-16 編碼的文本文件內容?

  • January 17, 2019

我知道例如 catfish 和 gnome-search-utils 都可以搜尋 UTF-8 編碼的文件內容。為了能夠在文本文件中搜尋單詞或數字,必須首先通過 iconv 將它們轉換為 UTF-8。

如果文件是已知的,那麼像 gedit 或 mousepad 這樣的文本編輯器對 UTF-16 沒有任何問題。

為什麼任何 Linux 發行版都沒有可以處理 UTF-16 編碼的 txt 文件的搜尋工具(GUI 或命令行)?

我在Xubuntu。

UTF-16(或 UCS-2)對於 C 標準庫和 POSIX ABI 使用的以 null 結尾的字元串非常不友好。例如,命令行參數以 NUL(值為 0 的字節)終止,並且任何數值 < 256 的 UTF-16 字元都包含一個零字節,因此任何普通英文字母的字元串都無法在 UTF-16 中表示在命令行參數上。

這反過來意味著任何一個實用程序都需要以其他格式(比如 UTF-8)接受輸入並轉換為 UTF-16;或者他們需要以其他方式接受他們的意見。第一個選項將要求所有此類實用程序包含(或連結到)用於轉換的程式碼,而第二個選項將使這些程序與其他實用程序的介面變得有些困難。

考慮到這些困難,以及 UTF-8 具有更好的向後兼容性屬性這一事實,我猜想很少有人關心使用 UTF-16 來激勵為此創建工具。

引用自:https://unix.stackexchange.com/questions/363946