其他賬號登錄: 注冊 登錄
柏慕聯(lián)創(chuàng)BIM技術(shù)服務(wù)

點亮建筑新夢想

LIGHT BUILDING NEW DREAM

企業(yè)BIM定制培訓(xùn)服務(wù)經(jīng)典案例
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設(shè)計研究院有限公司提供全國BIM技能等級考試考前專場培訓(xùn)(一)
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設(shè)計研究院有限公司提供全國BIM技能等級考試考前專場培訓(xùn)(二)
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設(shè)計研究院有限公司提供全國BIM技能等級考試考前專場培訓(xùn)(三)
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設(shè)計研究院有限公司提供全國BIM技能等級考試考前專場培訓(xùn)(四)
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設(shè)計研究院有限公司提供全國BIM技能等級考試考前專場培訓(xùn)(五)
柏慕聯(lián)創(chuàng)為成都建工一建提供第四期BIM項目深入實踐應(yīng)用培訓(xùn)班(一)
柏慕聯(lián)創(chuàng)為成都建工一建提供第四期BIM項目深入實踐應(yīng)用培訓(xùn)班(二)
柏慕聯(lián)創(chuàng)為成都建工一建提供第四期BIM項目深入實踐應(yīng)用培訓(xùn)班(三)
柏慕聯(lián)創(chuàng)為中冶建工集團提供基于Dynamo的市政路橋隧解決方案專項定制培訓(xùn)(一)
柏慕聯(lián)創(chuàng)為中冶建工集團提供基于Dynamo的市政路橋隧解決方案專項定制培訓(xùn)(二)
柏慕聯(lián)創(chuàng)為中冶建工集團提供基于Dynamo的市政路橋隧解決方案專項定制培訓(xùn)(三)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎(chǔ)定制培訓(xùn)(一)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎(chǔ)定制培訓(xùn)(二)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎(chǔ)定制培訓(xùn)(三)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎(chǔ)定制培訓(xùn)(四)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎(chǔ)定制培訓(xùn)(五)
柏慕聯(lián)創(chuàng)為中南建筑設(shè)計院股份有限公司提供2021年新員工入職BIM定制培訓(xùn)(線上/線下)(一)
柏慕聯(lián)創(chuàng)為中南建筑設(shè)計院股份有限公司提供2021年新員工入職BIM定制培訓(xùn)(線上/線下)(二)
柏慕聯(lián)創(chuàng)為中南建筑設(shè)計院股份有限公司提供2021年新員工入職BIM定制培訓(xùn)(線上/線下)(三)
柏慕聯(lián)創(chuàng)為中南建筑設(shè)計院股份有限公司提供2021年新員工入職BIM定制培訓(xùn)(線上/線下)(四)

BIMBOX | 空間基因:建筑信息編碼簡史(一)

 二維碼
作者:BIMBOX來源:BIMBOX網(wǎng)址:https://bimbox.top/1822.html

今天開始,我們花上幾期的時間,給你講一個比較大的話題:建筑信息編碼。

2018年5月1日《GBT 51269-2017 建筑信息模型分類和編碼標(biāo)準(zhǔn)》正式執(zhí)行,很多人還是有一肚子的問號。

編碼到底是什么?能干什么用?

為什么一定要編碼?用模型不行嗎?

編碼標(biāo)準(zhǔn)的執(zhí)行和我有什么關(guān)系?未來會影響哪些領(lǐng)域?

即便是對編碼稍有了解的人,也對它有兩個比較深的誤解:

誤解一:編碼就是給建筑物的構(gòu)件上「身份證」,給墻、柱、梁、板等物體賦予ID,統(tǒng)計用量時會比較方便。

但當(dāng)你去翻看《分類和編碼標(biāo)準(zhǔn)》的時候,會發(fā)現(xiàn)里面還有項目階段、工作成果、工具、甚至是參與角色的編碼,這些可不是建筑構(gòu)件啊,為什么也要編碼?

誤解二:編碼標(biāo)準(zhǔn)是給軟件開發(fā)商用的,和普通設(shè)計師沒關(guān)系,只要等軟件開發(fā)好了直接用就行了,編碼會自動附在模型上。

理論上是這樣,但越來越多大型企業(yè)的項目或海外項目,已經(jīng)明確要求在提交設(shè)計內(nèi)容的時候按照某某規(guī)范進行編碼,而軟件的「自動編碼」功能還遙遙無期,這又該怎么辦?

這一個系列,我們就一步一步剝開建筑信息編碼這個大洋蔥,說清楚它到底是干什么用的,北美三大編碼體系和英國的Uniclass是怎么回事,我國的編碼體系是什么情況,新出的分類和編碼標(biāo)準(zhǔn)該怎么使用,

最后還會說到,面對工程項目的編碼需求,我們該使用什么樣的工具來完成工作。

好了,廢話不多說,BIMBOX開車了。

  當(dāng)我們說編碼的時候,到底在說什么?

所謂編碼,就是「用通用性的符號來簡化某些含義」。人類的語言就是一種編碼。

比如,「天上那個早上出來傍晚落下去的金色火球」,就是個很長的含義,英文世界用「sun」這個字母組合來表達它。

中國就用一個圓圈中間加個點來表達它,后來這個符號演化成漢語里的「日」字。

不同地區(qū)使用不同的語言,這在人類文明發(fā)展的幾千年里都沒有出現(xiàn)大問題,文明互相接觸的時候可以互相學(xué)習(xí)對方的語言。一個人腦子里同時裝下「太陽」、「Sun」、「お日さま」幾個符號并不會出現(xiàn)混亂。

但到了計算機發(fā)明出來、人類進入數(shù)字化時代的時候,麻煩可就出現(xiàn)了。

當(dāng)我們說建筑信息編碼的時候,一個大前提就是用計算機來進行編碼。換句話說,就是把自然語言編寫成計算機可以讀取的數(shù)據(jù),這樣的數(shù)據(jù)才能自動進行計算和分析。

所以要說清建筑信息編碼,就得先用一期的內(nèi)容來說說人類進入數(shù)字化時代碰到的麻煩,以及我們是怎么解決它們的,這件事還真沒想象那么簡單。

你可以做一個有趣的試驗:在任意文件夾新建一個TXT文檔,輸入「聯(lián)通」兩個字,保存關(guān)閉,再打開的時候,原來的兩個字變成了奇怪的亂碼。

這個詭異的現(xiàn)象,就是人們解決計算機編碼問題遺留下來的一個小尾巴。我們最后再來回答這是怎么回事。

  從語言到數(shù)字

計算機一開始被發(fā)明出來是用來做算術(shù)題的,它通過內(nèi)部很多小開關(guān)的打開和關(guān)閉兩種狀態(tài),來表達不同的數(shù)字和運算規(guī)則。

所以計算機只能處理兩個數(shù)字:0和1。一切數(shù)字都必須轉(zhuǎn)化成2進制才能計算。十進制是逢十進一,二進制是逢二進一,十進制的3轉(zhuǎn)化成二進制就是11。

每一個小開關(guān)的0或者1的狀態(tài),叫做比特(Bit)。

仔細一想,你會覺得有點怪:計算機面對一大串0和1的時候,它怎么知道哪里開始、哪里結(jié)束,哪里斷開呢?比如下面這串二進制數(shù)字,如果把它理解成一個數(shù),換算成10進制就是72:

而如果把這串?dāng)?shù)字從中間斷成兩部分,就分別表達4和8兩個數(shù):

為了解決這個問題,人們就強制計算機每次都處理8個連在一起的數(shù)字,不能斷開,這8個比特組成的一個最小計算單元,就叫字節(jié)(Byte)。

你可以把一個字節(jié)看成一個編碼狀態(tài),每一位有兩種可能(0和1),一共8位,不同的排列組合可以表達出2的8次方=256種狀態(tài)。

人們發(fā)現(xiàn),這么多種狀態(tài)不僅可以表示數(shù)字,還可以把英文字母和一些特殊符號囊括進來。這樣一來,計算機就不僅可以處理數(shù)學(xué)問題,還可以處理文字了。

不同字節(jié)狀態(tài)具體代表哪個字符,需要統(tǒng)一口徑。于是1968年,美國國家標(biāo)準(zhǔn)學(xué)會就制定了一套標(biāo)準(zhǔn),規(guī)定所有字節(jié)第一位統(tǒng)一為0,只用了八位數(shù)的后七位,也就是2的7次方=128種組合。

前32種是控制字符,讓計算機執(zhí)行一些特殊指令,比如00000000表示空字符,00001010表示換行。

從第33種組合開始,后邊的字符分別代表英文字母、數(shù)字或一些特殊符號。比如01010011代表S,00110000代表數(shù)字0。

這樣,英文單詞Sun就可以變成三個8位數(shù)的字節(jié),被計算機理解了。

這套標(biāo)準(zhǔn)叫做美國信息交換標(biāo)準(zhǔn)碼(American Standard Code for Information Interchange),簡稱ASCII。

后來,電腦從美國傳到了其他國家,像法國或者德國這些國家的語言里還有一些非英文字母,ASCII編碼方案就不夠用了。

不過沒關(guān)系,ASCII第一位統(tǒng)一都是0,只用了256種組合中的前128種。這些國家就在ASCII的基礎(chǔ)上,從第129種組合開始擴展自己的編碼體系,把新增的符號定義為1開頭的字節(jié),這樣就把ASCII的容量擴充了一倍。

這些國家擴展的規(guī)則是不一樣的,同樣一個字節(jié),在阿拉伯或者俄羅斯的ASCII擴展中代表不同的字母。

大家基本上是各用各的標(biāo)準(zhǔn),有得用總比沒得用強,也還算是開心。

但也有其他人不開心。

比如中國,常用漢字有幾千個,加上生僻字和少數(shù)民族語言符號有幾萬個,區(qū)區(qū)256種組合怎么夠用?

沒辦法,我們只好自己開發(fā)一套編碼規(guī)則,不使用8位的單字節(jié),而是使用16位的雙字節(jié)來表達一個符號。這樣我們就有2的16次方=6萬多種組合可以用了。

中國的編碼標(biāo)準(zhǔn)從最早的GB2312,一直發(fā)展到最新的GB18030,從幾千個常用漢字?jǐn)U充到幾萬個符號。

為了解決中英文混合問題,GB系列編碼也必須向下兼容ASCII編碼才行,

GB編碼標(biāo)準(zhǔn)規(guī)定:凡是以0開頭的字節(jié),都被認(rèn)為是ASCII編碼中的英文字符,凡是以1開頭的字節(jié),就告訴計算機還沒完,得把下一個字節(jié)也算進來,組合起來表達一個漢字。

比如「S型人格」編碼就是下面這樣:

不過,這種雙字節(jié)中文字符和單字節(jié)英文字符并存的編碼方式,會帶來一個新麻煩:使用GB系列的編程人員需要萬分小心,一旦弄錯了一個字節(jié),很可能后邊跟著的所有文字就全錯了。

比如「S型人格」的二進制編碼,如果把第一個字節(jié)中的第一位0替換成1,其他不變,即便只錯了一個數(shù)字,也會導(dǎo)致一串編碼全部錯誤。

這種情況在單字節(jié)的ASCII里是不會出現(xiàn)的。

如果說編程上的容錯性可以通過我們辛勤的本土工程師來解決,那更大的麻煩還在后面。

  霸氣的「終極語言編碼」

到這個時候,世界上的編碼體系已經(jīng)很混亂了。

非英語國家對ASCII碼用各自的方法擴充,同樣的字節(jié)代表不同的符號,中國這樣的國家還用單雙字節(jié)混編,甚至大陸和臺灣的編碼規(guī)則都互相沖突。

這對于跨國軟件公司和互聯(lián)網(wǎng)發(fā)展都是非常不方便的,使用軟件或者訪問網(wǎng)站,必須事先安裝對應(yīng)地區(qū)的編碼系統(tǒng),否則就會出現(xiàn)亂碼。

這時候國際標(biāo)準(zhǔn)化組織ISO站出來說:都別鬧了,我來制定一個大一統(tǒng)的編碼規(guī)則吧!

這套編碼規(guī)則俗稱Unicode,囊括了地球上所有文化的符號。因為各地區(qū)的編碼已經(jīng)出現(xiàn)了沖突,大一統(tǒng)編碼已經(jīng)不能兼容不同國家現(xiàn)有的編碼了。

ISO的做法很暴力:除了對ASCII向下兼容,其他的編碼統(tǒng)統(tǒng)廢除,重新編。

16位的雙字節(jié)編碼只能組合出6萬多種可能,要做到大一統(tǒng)也不夠用。沒關(guān)系,再加位數(shù),加到32位的四字節(jié)編碼,排列組合高達42億種。這下用到宇宙文明統(tǒng)一也沒問題了。

不過,舊麻煩的解決總是會帶來新麻煩。

首先就是儲存效率問題。

對于歐美國家來說,本來用一個8位字節(jié)能解決的事,為了兼容其他語言,硬生生的要用雙字節(jié)甚至4字節(jié)來編碼,比如ASCII中字母S的編碼是「01010011」,到了Unicode里就要把前面的空位用一串0補足。

這樣,本來用1個G能儲存的文件,變成4字節(jié)的Unicode碼之后就會變成4個G。

更大的問題是網(wǎng)絡(luò)傳輸問題。

在Unicode編碼發(fā)明的時候,網(wǎng)速還是很慢的。如果一次傳輸4個字節(jié),效率就是單字節(jié)的四分之一。

想想你花錢買了20M的寬帶,因為換了個編碼系統(tǒng),變成了5M的速度,擱誰也不干啊。

所以Unicode編碼在當(dāng)時遭到了英文國家的強烈抵制。

為了解決這個問題,人們又發(fā)明了Unicode編碼轉(zhuǎn)換格式(Unicode Transformation Format),簡稱UTF,來規(guī)定Unicode編碼的儲存和傳輸方式。

它分為UTF-8、UTF-16、UTF-32等等,顧名思義,UTF-32表示一次傳輸32位、4個字節(jié),UTF-8就表示一次傳輸8位、一個字節(jié)。

其中,UTF-8效率最高,最為常用。

既然UTF-8是一次傳輸一個字節(jié),計算機怎么知道當(dāng)前這個字節(jié)是完整表達了一個含義,還是后邊還跟著其他字節(jié)呢?

UTF-8是變長度編碼,根據(jù)符號在Unicode中所在的編碼位置,定義了不同的字節(jié)長度模板:

如果一個符號在Unicode碼中占前127位,只需要一個字節(jié)就能表示,對應(yīng)的二進制是0開頭的8位數(shù)字,那就直接傳輸這個字節(jié),并在這個字節(jié)結(jié)束,不需要前面再補0了。

也就是說,英文語言使用UTF-8和ASCII是一模一樣的。

位數(shù)增大,一個字節(jié)不夠用了,就套用這樣一個雙字節(jié)模板:第一個字節(jié)以110開頭,第二個字節(jié)以10開頭,告訴計算機,這兩個字節(jié)需要組合起來共同表達一個符號。下圖中紅色的部分就是強制規(guī)定的模板數(shù)字。

位數(shù)繼續(xù)增大,兩個字節(jié)也不夠用了,就再套用一個三字節(jié)模板:第一個字節(jié)以1110開頭,后面兩個字節(jié)還是以10開頭,告訴計算機,這是一個三字節(jié)組合的符號。

以此類推,四個字節(jié)的模板就是:第一個字節(jié)以11110開頭,后邊再跟著三個以10開頭的字節(jié)。

這樣,我們就解決了不同語言之間編碼兼容的問題,又解決了低位數(shù)編碼的傳輸效率問題。

當(dāng)一個文件以英文為主的時候,UTF-8的效率非常接近ASCII。不過對于中文來說,漢字用GB碼只需要兩個字節(jié),到了UTF-8里卻需要用3個字節(jié)來表達(因為上圖中紅色的模板數(shù)字占去了4+2+2=8位),所以純中文的網(wǎng)站用UTF-8比用GB碼傳輸起來效率要低一些。

但前面我們說過,GB碼中英文混排的時候,會因為弄錯或者丟失一個字節(jié),導(dǎo)致后邊的所有文字全都錯誤。而UTF-8在多字節(jié)組合的時候有一套嚴(yán)格的模板,中間一個字節(jié)出現(xiàn)了錯誤,亂碼不會擴散,比GB碼多了容錯性的優(yōu)勢。

此外,使用UTF-8,其他國家的人不需要安裝中文編碼規(guī)則,也不會出現(xiàn)亂碼。所以國內(nèi)的新網(wǎng)站更偏愛使用UTF-8。

因為UTF-8和GB碼兩者是完全不兼容的,所以一些老牌中文軟件和網(wǎng)站出于轉(zhuǎn)化成本的考慮,還是沿用GB系列的編碼。

說到這兒,我們就能解釋前邊那個記事本「聯(lián)通」兩個字亂碼的現(xiàn)象了。記事本在打開一個文檔的時候,不會問你是用什么格式儲存的,而是通過你輸入文字的代碼來「猜」它的編碼格式。

在我們輸入中文的時候,記事本默認(rèn)使用的是GB編碼,我們看「聯(lián)通」兩個字對應(yīng)的GB碼:

注意看紅色部分,是不是和UTF-8的雙字節(jié)模板正好一模一樣?所以當(dāng)你默認(rèn)保存再打開的時候,記事本通過這兩行代碼,猜測這個文檔用的是UTF-8格式,而UTF-8和GB編碼是不兼容的,于是就出現(xiàn)了亂碼。

你可以試試,在存有「聯(lián)通」的記事本文件另存的時候,選擇用UTF-8格式保存,或者多打幾個字,再打開就不會出現(xiàn)亂碼了。

好了,總結(jié)一下今天說到的幾個知識點:

計算機無法理解自然語言,需要轉(zhuǎn)化成二進制編碼;

英文和數(shù)字在轉(zhuǎn)化的時候效率最高,只需要用到8位的單字節(jié)編碼ASCII;

不同地區(qū)各自設(shè)計編碼,遲早會在交流中遇到問題,大一統(tǒng)編碼勢在必行;

編碼規(guī)則中,某一個符號必須嚴(yán)格對應(yīng)一個二進制代碼,否則就會出現(xiàn)混亂;

新編碼規(guī)則不占用舊編碼的代碼,且保留原來的一一對應(yīng)關(guān)系,它就是向下兼容舊編碼的;

新編碼如果不兼容舊編碼,就會產(chǎn)生替換成本,從而引發(fā)一系列歷史遺留問題;

為解決一個麻煩創(chuàng)造新的編碼,經(jīng)常也會帶來新的麻煩;

編碼的簡潔高效與可擴展性,往往不可兼得。

下一期開始,我們的建筑信息編碼就要正式登場了。你不妨先思考一個問題:

如果編碼只需要考慮語言兼容的問題,為什么光是北美地區(qū)就先后出現(xiàn)了Masterformat、Uniformat、Omniclass三種建筑編碼體系?比起語言編碼,建筑編碼是不是有更復(fù)雜的問題需要解決呢?

歡迎你把疑問和對編碼知識的見解留言給我們,我們會把你的高見和我們的回答補充到后面的連載內(nèi)容里。

有態(tài)度,有深度,BIMBOX,咱們下次見!


會員登錄
登錄
其他賬號登錄:
我的資料
留言
回到頂部