[筆記] Unicode 等價性

Unicode 等價性
記錄個

https://zh.wikipedia.org/zh-tw/Unicode等價性

Windows 和 Linux 使用 NFC (規範化形式規範組合,Normalization Form Canonical Composition) 方式來儲存 Unicode 字元,
而 MacOS 則是使用 NFD (規範化形式規範分解,Normalization Form Canonical Decomposition) 的方式。
例如像是帶有濁音的日文平假名「ば」在 NFC 形式下是以 U+3070 單一字元的方式儲存,
但是如果將含有此字元的檔案傳到 MacOS 系統時,
字元將會轉為 NFD 的方式來儲存,
此時「ば (U+3070)」將會被拆分成假名與濁音分開的組合字元「ば (U+306F は 和 U+3099 ゙ 兩個字元)」,
並且在傳回使用 NFC 的系統時不一定會轉換回「ば (U+3070)」,
這會在日後使用上冒出一些問題(使用 FTP 或其他方式進行跨系統備份合併資料夾或檔案時,遇到包含組合字元的檔案造成出現兩個看似一樣名稱的檔案,而造成備份出現混亂……等等)。




以下為轉換回單一字元的搜尋關鍵字:
nfd nfc ファイル名 変換
nfd nfc ファイル名 変換 linux





Linux or Mac OS X:

假設要將 /home/user/ftp
資料夾底下的所有資料夾與檔案
從 nfd 轉換為 nfc,
且作業系統為為 archlinux,則:

# 透過安裝器安裝 convmv 套件: 

pacman -S convmv

# 然後 cd 到目的地目錄

cd /home/user/ftp

# 然後執行: 

convmv -r -f utf8 --nfd -t utf8 --nfc * --notest

即可對目的地目錄以及子目錄完成 nfd2nfc 的檔名轉換。




convmv 選項說明機器翻譯:

你的 Perl 版本有跳蚤 #22111 #37757 #49830
convmv 2.05 - 將檔案名稱從原始編碼方式轉換成另一種編碼方式
Copyright (C) 2003-2018 Bjoern JACKE <bjoern@j3e.de>
此程式絕對無保修; 它可能被複製或修改
根據已發佈的GNU通用公眾授權條款版本 2 或 3 的條款
by 自由軟體基金會。

 使用方式:convmv [選項] 多個檔案…
-f enc  指定*來源*的編碼方式
-t enc  指定*目標*的編碼方式
-r  遞歸子目錄
-i  互動模式(詢問每個動作)
--nfc  將目標檔案轉換為規範組合形式的 UTF-8(Linux…等等使用)
--nfd 將目標檔案轉換為規範分解形式的 UTF-8(OS X…等等使用)
--qfrom 停用重新命名的「來源」輸出(舉例來說如果它搞亂了你的終端機)
--qto  停用重新命名的「目標」輸出(舉例來說如果它搞亂了你的終端機)
--exec c  執行指令而不是重新命名(使用 #1 和 #2 並參見 man 手冊頁)
--list  列出所有可用的編碼
--lowmem  降低記憶體的使用率(參見 man 手冊頁)
--map m  套用一個額外的字元映射
--nosmart  如果可以,忽略檔案是否已經是 UTF-8 並將其轉換
--notest  直接重新命名檔案而非測試
--replace  如果目標檔案相同,則覆蓋檔案
--unescape  轉換%20醜陋的%20跳脫%20序列
--upper 轉為大寫
--lower 轉為小寫
--parsable 編寫可解析的待辦事項列表(參見 man 手冊頁)
--help 列出此說明

這個網誌中的熱門文章

[雜物] 自製的 Magisk 字型模組與一堆無趣的小玩意兒

[筆記][Void glitch] 捕捉謎之場所阿爾宙斯的最低必要條件

[蒐集] 刷機資源蒐集與記錄