再也不麻煩了,向煩死人的 Big5 告別吧。
以往為了應付 Windows 而必須先把檔案名稱轉換成 Big5 才能讓他們在 Windows 正常解壓縮。這種做法很可能會遇到 Unicode 轉換到 Big5 失敗的問題,例如游錫堃的「堃」在 Big5 裡面就沒有,這時候就需要想很多 workaround。
但如果你面向的使用者很少,例如公司內部用的系統,解法會比較簡單。rubyzip 不知到哪時候開始提供了一個可以讓新版的 Windows 直接認出 Unicode 檔名的方法:
files with non ascii filenames — rubyzip/rubyzip _rubyzip - Offical Rubyzip repository_github.com
簡單來說,這樣設定就行了:(Rails 的話開一個 initializer 即可)
Zip.unicode_names = true
凡 Windows 8 以上的版本都沒問題。檔案總管內建的解壓縮工具就可以了。
至於如果你要支援 Windows 7 以下,或使用者不固定⋯⋯Good luck 😂
同樣的問題本來我已經 6 年沒處理了,但最近來到日本,又要應付 Shift_JIS 的問題。看來 legacy encoding 真的是到哪裡都很煩的問題。