文本編碼與換行符
程序員都知道為了讓只能處理數(shù)字的計算機(jī)處理文本矾湃,計算機(jī)科學(xué)家們將文本與數(shù)字對應(yīng)形成編碼亡脑,如著名的ASCII和UTF8。由于歷史與地域的原因,目前的編碼已經(jīng)非常豐富霉咨。于此同時蛙紫,文本中的換行符不像編碼那么多種多樣但常用的也不只一種,到底用CRLF還是LF就得好好考慮一下途戒。
在同一個項目中的不同文件可能采用了不同的編碼和換行符坑傅。你當(dāng)然可以要求團(tuán)隊成員新建文件時使用何種編碼以及何種換行符,但當(dāng)你使用第三方庫時總不能保證其他人使用的編碼與你的一致喷斋。為了不踩進(jìn)編碼和換行符的坑中唁毒,咱們不如搞個自動替換工具,一勞永逸解決這個問題继准。
搞個工具
Unity編輯器本身是很容易擴(kuò)展的,我寫了這樣子的一個小工具來幫助我統(tǒng)一編碼和換行符還有到底是用空哥還是制表符來當(dāng)縮進(jìn)的千古難題:
image
而這樣的一個工具核心功能的實現(xiàn)也很簡單:
private void HandleCurFile(string fileName)
{
try
{
string content = File.ReadAllText(fileName);
// 替換換行符
content = content.Replace("\r", "");
content = content.Replace("\n", lineEndings[selectLineEndingIndex]);
// 處理制表符
content = isInsertSpaces ? content.Replace("\t", new string(' ', spaceCount)) : content.Replace(new string(' ', spaceCount), "\t");
// 按對應(yīng)編碼寫入文件
File.WriteAllText(fileName, content, encodings[selectEncodingIndex]);
}
catch (Exception ex)
{
Debug.LogErrorFormat("FormatWindow HandleCurFile Format file faild, fileName: {0} msg: {1}", fileName, ex.Message);
}
}
要查看完整代碼矮男,可以前往我的github中的FormatCode這個項目移必。
支持
最后,如果你喜歡本文毡鉴,歡迎進(jìn)行關(guān)注崔泵,打賞,點贊猪瞬,點Star憎瘸。