作為一名iOS開發(fā)牙丽,
因為目前我工作的工程里有很多c++/c的文件捍壤,這些文件時之前開發(fā)pc程序的時候续誉,有一些是可以公用在iOS端的哲银,所以直接拿過來放到xcode工程使用扛吞,這是我的猜測,但很有這個可能荆责,因為如果是在Xcode建的文件滥比,不會出現(xiàn)編碼問題,只有從其他平臺拿過來的文件草巡,比如windowns上的守呜,默認(rèn)的文件編碼方式一般都是gb2030啥的,而macOS上的文件是utf-8編碼的山憨,所以造成中文亂碼查乒。
很多注釋都是中文,變成了亂碼郁竟,對理解代碼就非常不方便玛迄,比如一些數(shù)據(jù)結(jié)構(gòu)的定義,完全不知道這個數(shù)據(jù)干嘛的棚亩,或者一個方法干嘛的蓖议,轉(zhuǎn)成中文勢在必行,所以進行了一番探索讥蟆。
以上是背景勒虾,下面來看看解決辦法:
-
最開始是在Xcode里,在文件配置地方改成utf-8瘸彤,但是發(fā)現(xiàn)不起作用修然,放棄~
image.png
image.png
2.show in finder , 然后以文本編輯方式打開质况,大部分顯示問題可以解決愕宋,此時保存,關(guān)閉结榄,回到Xcode中中文也確實不亂碼了中贝,但是別高興得太早,下次你重新打開Xcode中文還是變成了亂碼臼朗,并且在你用svn準(zhǔn)備提交的時候邻寿,這里并沒有什么變化蝎土,意思也就是,雖然你解決了現(xiàn)顯示問題绣否,但是文件本身還是沒有變化瘟则,原因不詳,或許以這種方式根本就沒有改變文件的編碼方式枝秤。
3.使用了一個牛人的插件醋拧,與原理大概就是猜測原文件編碼格式,一個一個格式的試淀弹,猜對了就能轉(zhuǎn)成中文丹壕,
意思跟網(wǎng)頁上的一個工具大體類似
http://www.mytju.com/classCode/tools/messyCodeRecover.asp
這個插件我的github上上傳了一份,https://github.com/CoderRWL/GB18030-utf-8.git
安裝后薇溃,就可以在文件上右鍵菌赖,選擇轉(zhuǎn)換
這個也可以解決大部分問題,但是我發(fā)現(xiàn)這個插件好像有長度限制沐序,如果我的文件里的內(nèi)容比較多琉用,我的可能就1千行左右,發(fā)現(xiàn)只有一部分轉(zhuǎn)換了策幼,而剩余的部分卻丟失了邑时,也就是刪除了文件后面部分內(nèi)容,我猜測特姐,插件程序?qū)懙臅r候可能寫死了一個最大長度的輸入晶丘,輸出就是全部覆蓋原來的內(nèi)容,這里我們就不再論證了唐含,我建議對于內(nèi)容比較少的文件可以只用此插件轉(zhuǎn)換浅浮,且轉(zhuǎn)換后你自己也要檢查下文件是否有缺失奠货,如果有就還原吧桩引,我是使用的svn還原,還算比較方便奈偏,如果你沒有使用版本管理工具的淮捆,使用前就得自己備份一份郁油,方便后面找回。
4.使用命令行争剿,
cd到文件已艰,使用:find *.h -exec sh -c "iconv -f GB18030 -t UTF8 {} > {}.txt"
可以批量轉(zhuǎn)換痊末,也有單個文件轉(zhuǎn)換蚕苇,這里就不再介紹了
5.最后還有一個笨方法,就是把文件用windwns上的開發(fā)工具打開凿叠,我使用Visual Studio打開涩笤,也可以把亂碼轉(zhuǎn)成中文嚼吞,然后保存,在替換到Xcode工程里蹬碧,注意看下svn上的變化是否最后變成了中文.
上面就是自己的使用過的一些方法了舱禽,怕忘記,暫記于此~