關於碼衝 (編碼衝突) (中文檔名與路徑編譯衝突)
● 小吳常常在上課中提到,沒有禁止你使用中文檔名,但是建議盡可能不要使用【中文檔名,包括:中文路徑、中文資料夾、中文專案名稱、中文影片名稱、甚至中文圖檔名稱】。

你的 Premiere Pro CC 非線性剪輯軟體  或是  TriCaster 系列導播機軟體,為什麼有人使用中文就不曾反應問題,為什麼有人使用中文就問題一堆呢 ! 

那是有些人的反應能力特別好,一發生使用問題,可以馬上直接聯想,可能是【中文名稱】造成,並立刻改變其【中文名稱】成為【半形英文字母 或 半形阿拉伯數字】因此工作順利持續進行。

而大多數人的反應能力則一般般,一旦發生使用問題,不肯相信可能是【中文名稱】造成,因此工作頓時無法繼續進行,甚至工作就此卡住。

簡單的說:這些軟體,我個人稱呼它們為【外國人】,外國人它可能懂中文,但不是全盤的懂,當他不懂時,就會出現問題,大家稱呼它為【碼衝】或【碼冲】,也就是【中文字符編碼衝突】。

● 收先,我們必須知道【電腦文字】是有不同的【字符編碼】
◇【English 英文 電腦系統 →是 ASCII 字符編碼】
◇【簡體中文 電腦系統 →是 GBK 字符編碼】
◇【繁體中文 電腦系統 →是 Big-5 字符編碼】
◇【韓文 電腦系統 →是 EUC-KR 字符編碼】
◇【日文 電腦系統 →是 Shift JIS 字符編碼】。

● 如果您還不懂,說一段小故事,讓您參考:
● 電腦還沒被發明之前,文字就只是文字,全球網際網路還沒被發明之前,文字的字符編碼,也沒那麼重要 !!
● 話說很久很久以前,電腦文字是由美國制定出來的,他們覺得一個字節(一個字節總共有256個編碼)可以囊括英語世界裡所有的字母、數字和常用特殊符號,全部只用了前0~127個編碼,這就是美國發表的【ASCII 字符編解碼器】。這就是為什麼【軟體一旦發生使用問題時,可以馬上直接聯想是【碼衝】,可能是【中文名稱】造成,並立刻改變其【中文名稱】成為【半形英文字母 或 半形阿拉伯數字】因此工作順利持續進行,因為【半形英文字母 或 半形阿拉伯數字】是全世界所有電腦都統一的【000~127字符代碼表】不會有【碼衝】問題。
◆ 下圖是 ASCII 字符代碼表 000~127個編碼(這就是我們熟知的 內碼表)。
image

圖片來源:https://zhuanlan.zhihu.com/p/38333902

● 後來在歐洲的電腦文字建構時,法國人說:我需要在小寫字母加上變音符號(如:é),德國人說:我也要加幾個字母(Ä ä、Ö ö、Ü ü、ß)。於是,歐洲人就將【ASCII 字符編解碼器】沒用完的編碼(128~255)用在歐洲自己特有的符號編碼,後來稱之為【擴展字符集】。
◆ 下圖是 ASCII 字符袋碼表 128~255個編碼(這就是我們熟知的 內碼表)。
image

圖片來源:https://zhuanlan.zhihu.com/p/38333902

● 等到大中華電腦文字建構時,256個字符編碼哪夠 ?我泱泱大中華,漢字起碼也得N多萬吧,就連小學生都得要求掌握兩三千字。中國大陸最後拍板:一個字節不夠,那我們就用多個字節來為漢字編碼吧,但是,當年中國大陸還那麼窮,字節那麼貴,三個字節傷不起,那就二字節吧,先給常用的幾千漢字編個碼,等以後國家強盛了人民富裕了,咱再擴展唄---,這就是中國大陸發表的【GB2312 字符編解碼器】。香港及台灣同胞一看,竟喊出動物羊駝的小名【草泥馬】,怎麼只有簡體字,還讓不讓我們這些使用繁體字的有一條活路呢 ? 於是港台同胞也自己弄了個繁體字編碼---大五碼【Big-5 字符編解碼器】。

● 當時,同一時間,全世界每個國家,也正在為自己的文字編碼傷腦筋。

● 最後,微軟發話了:顧客就是上帝啊,你們的編碼我都得滿足啊,這樣吧,賣給美國國內的系統就【預設使用ASCII 編解碼器】吧,賣給中國大陸的系統就【預設使用GBK編解碼器】吧,賣給韓國人的系統就【預設使用EUC-KR編解碼器】,...但是為了避免你們誤會我微軟賣給你們的系統功能有差異,我就統一把你們的預設編碼都顯示成【ANSI 編解碼器】吧。---本故事純屬虛構,但「ANSI 編碼」確實只存在於Windows系統。
● 轉載自【每日頭條】資料來源:KKNews https://kknews.cc/zh-tw/code/442kg42.html
原文網址:https://kknews.cc/code/442kg42.html

● 實際案例:
●實際案例一:解決方式→【縮短全形字元數量】
【處理前】F:\一起撩新聞\一起撩新聞\片頭.mov【無法正確使用影片】
【處理中】遇到【無法播放影片】→這裡選擇以【縮短全形字元數量】來解決此問題。
【處理後ok】F:\一起撩新聞\片頭.mov【可以法正確使用影片】
建議:【半形英數通常沒問題】F:\Video\Opening.mov【可以法正確使用影片】

●實際案例二:解決方式→【變更字元前後組合】
【處理前】D:\一起撩新聞\片頭.mov【無法正確使用影片】
【處理中】遇到【無法播放影片】→這裡選擇以【變更字元前後組合】來解決此問題。
【處理後ok】F:\一起撩新聞\片頭.mov【可以正確使用影片】
建議:【半形英數通常沒問題】F:\Video\Opening.mov【可以正確使用影片】

●實際案例三:解決方式→【替換字元組合】
【處理前】D:\一起撩新聞\片頭.mov【無法使用影片】
【處理中】遇到【無法播放影片】→這裡選擇以【替換字元組合】來解決此問題。
【處理後ok 1】D:\Media\片頭.mov【可以正確使用影片】
【處理後ok 2】D:\一起撩新聞\ Opening.mov【可以正確使用影片】
建議:【半形英數通常沒問題】D:\ Media \Opening.mov【可以正確使用影片】

●實際案例四:解決方式→【改變字元的排列順序】。
【處理前】專案名稱 = 命題介紹【軟體部份功能失效】
【處理中】遇到【軟體部份功能失效】→這裡選擇以【改變字元的排列順序】來解決此問題。
【處理後ok 】專案名稱 = 題命介紹【軟體正常運作】
建議:【半形英文字母通常沒問題】專案名稱 = 2017-03-01【軟體正常運作】
建議:【半形阿拉伯數字通常沒問題】專案名稱 = 1200 News【軟體正常運作】

首先,舉例說明編譯問題:
當你將以下二段連結網址,其中一段,複製貼上在網頁瀏覽器中,都會開啟本網頁,代表它們表面字元數量不同,其實是完全一樣的連結。

1.第一段
http://wellswoo.pixnet.net/blog/post/223402018-關於碼衝(中文檔名與路徑編譯衝突)

2.第二段
http://wellswoo.pixnet.net/blog/post/223402018-%E9%97%9C%E6%96%BC%E7%A2%BC%E8%A1%9D(%E4%B8%AD%E6%96%87%E6%AA%94%E5%90%8D%E8%88%87%E8%B7%AF%E5%BE%91%E7%B7%A8%E8%AD%AF%E8%A1%9D%E7%AA%81)

● 我們可以將它解釋成
第一段的英文【= 等於】第二段的英文
http://wellswoo.pixnet.net/blog/post/ = http://wellswoo.pixnet.net/blog/post/

第一段的數字【= 等於】第二段的數字
223402018 = 223402018

第一段的中文字【= 等於】第二段的電腦語言
關於碼衝(中文檔名與路徑編譯衝突) = %E9%97%9C%E6%96%BC%E7%A2%BC%E8%A1%9D(%E4%B8%AD%E6%96%87%E6%AA%94%E5%90%8D%E8%88%87%E8%B7%AF%E5%BE%91%E7%B7%A8%E8%AD%AF%E8%A1%9D%E7%AA%81)

因此,半形的英文字母或是阿拉伯數字,經編譯成為電腦語言,會保留其原形,編譯時間可以即時呈現。
全形的符號或中文字,經編譯成為電腦語言,會改變其原形,編譯時間可能需要時間花費更久,才能正確呈現。在一般應用問題不大,但是對於需要即時的影像,就會因為短暫的來不及,短暫產生錯誤,雖然是短暫的錯誤,也可能造成應用程式的錯誤,進而影響其結果。

● 關於碼衝 (編碼衝突) 維基百科也可以看到部份解釋

● Big5 衝碼問題
原文請參考   https://zh.wikipedia.org/wiki/big5
因為低位元字元中包含了程式語言、shell、script中,字串或命令常會用到的特殊字元,例如0x5C「\」、0x7C「|」等。「\」在許多用途的字串中是當作轉義符號又稱為跳脫字元,例如\n(換行)、\r(歸位)、\t(tab)、\\(\本身符號)、\"(引號)等等。而「|」在UNIX作業系統中大多當作命令管線的使用,如"ls -la | more"等等。如果在字串中有這些特殊的轉義字元,會被程式或直譯器解釋為特殊用途。但是因為是中文的原因,故無法正確解釋為上面所述的行為,因此程式可能會忽略此轉義符號或是中斷執行。若此,就違反了使用者本來要當成中文字元一部份使用的本意。

低位元字元與ASCII重疊的字元如下︰@ A-Z [ \ ] ^ _ ` a-z { | } ~

在常用字如「功」(0xA55C)、「許」(0xB35C)、「蓋」(0xBB5C)、「育」(0xA87C)中時常出現,造成了許多軟體無法正確處理以Big5編碼的字串或檔案。這個問題被戲謔性地人名化,稱為「許功蓋」或「許蓋功」(這三個字都有這種問題)。

一般的解決方法,是額外增加「\」的字元,因為「\\」會被解釋為「\」,所以「成功\因素」這個字串就能無誤地被程式當作「成功因素」的字串來處理。但是額外的困擾是,有些輸出功能並不會把「\」當作特殊字元看待,所以有些程式或網頁就會錯誤地常常出現在「許功蓋」這些字後面多了「\」。

● Big5 與畫線字元相衝

Big5碼字元的首位元組會與DOS代碼頁437的畫線字元相衝而產生亂碼。

例如

┌───────┐ │維基百科│ └───────┘

當中的中文字如以Big5碼儲存,顯示時會變成:

┌────────┐ 竟?穧坌鮈? └────────┘

也有替代方法就是用全形劃線符號,但較佔空間。倚天公司另外推出倚天碼解決此問題,但不流行。

● 全形字元產生的問題
原文請參考  https://zh.wikipedia.org/wiki/%E4%B8%AD%E6%96%87%E4%BA%82%E7%A2%BC
過往,亂碼所產生的問題,往往只是閱讀上的不方便,因為文字變成了亂碼,使用者看不到文字的內容。然而,現時由於電腦軟體保安設計的問題,亂碼隨時可能會使應用程式不正常關閉。

● 除非您有多餘的時間進行驗證問題,否則強烈建議您不要使用【全形字元符號】及【全形中文字元】的檔名與路徑。
◎ 一個【半形】的英文或阿拉伯數字或符號,使用 1 Byte。
◎ 一個【全形】的英文或阿拉伯數字或符號或中文,使用 2 Byte。
◎ 容易出現使用問題的部份,一般發生在【全形】的字元,您願意冒這個險嗎 ?

以上 小吳老師 整理 2017.08.12
以下 小吳老師 補充 2023.02.13

。認識【文字的字符編碼】
● 在 使用記事本APP,【編輯文字檔】後,直接按【存檔】時,預設值會以【ANSI 格式】作為編解碼格式。
● 在 使用記事本APP,【文字檔】在另存新檔時,其實可以選擇【不同的編碼】的選項,有 ANSI、UTF-16LE、UTF-16BE、UTF-8、具有BOM的UTF-8。
image

● 存檔時,【選擇哪一種的編碼】,解碼時就必須以【同一種編解碼器】才能正確解碼,否則會出現【亂碼】。
image
● 但是,有一些軟體,【只解碼一種編解碼器格式】,例如:【字幕軟體】一般都只接受【UTF-8】或【具有BOM的UTF-8】。
● 您有沒有注意到,出現【亂碼】時,一般只有【中文】有問題,英文與數字則正常。
● 由於【英文與數字】每一個字母或阿拉伯數字,只佔有一個字節大小 (就是中文所謂的半形 或 半形空格大小)。因此解碼時,幾乎很少遇到解碼問題,不容易遇到【錯亂】或【亂碼】。
● 中文:每一個字,卻佔有二個字節大小 (就是中文所謂的全形 或 全形空格大小)。因此解碼時,一旦解碼格式不對,就會出現【錯亂】或【亂碼】。如果【英文、數字、符號】也使用【全形字元】時,也會與中文一樣,要特別注意【解碼格式】。
image

※ ANSI是什麼字符編碼?
● 轉載自【每日頭條】資料來源:KKNews https://kknews.cc/zh-tw/code/442kg42.html

● 電腦還沒被發明之前,文字就只是文字,全球網際網路還沒被發明之前,文字的字符編碼,也沒那麼重要 !!

● 話說很久很久以前,電腦文字是由美國制定出來的,他們覺得一個字節(一個字節總共有256個編碼)可以囊括英語世界裡所有的字母、數字和常用特殊符號,全部只用了前0~127個編碼,這就是美國發表的【ASCII 字符編解碼器】。

◆ 下圖是 ASCII 字符袋碼表 000~127個編碼(這就是我們熟知的 內碼表)。
image
圖片來源:https://zhuanlan.zhihu.com/p/38333902

● 後來在歐洲的電腦文字建構時,法國人說:我需要在小寫字母加上變音符號(如:é),德國人說:我也要加幾個字母(Ä ä、Ö ö、Ü ü、ß)。於是,歐洲人就將【ASCII 字符編解碼器】沒用完的編碼(128~255)用在歐洲自己特有的符號編碼,後來稱之為【擴展字符集】。

◆ 下圖是 ASCII 字符袋碼表 128~255個編碼(這就是我們熟知的 內碼表)。
image
圖片來源:https://zhuanlan.zhihu.com/p/38333902

● 等到大中華電腦文字建構時,256個字符編碼哪夠 ?我泱泱大中華,漢字起碼也得N多萬吧,就連小學生都得要求掌握兩三千字。中國大陸最後拍板:一個字節不夠,那我們就用多個字節來為漢字編碼吧,但是,當年中國大陸還那麼窮,字節那麼貴,三個字節傷不起,那就二字節吧,先給常用的幾千漢字編個碼,等以後國家強盛了人民富裕了,咱再擴展唄---,這就是中國大陸發表的【GB2312 字符編解碼器】。香港及台灣同胞一看,竟喊出動物羊駝的小名【草泥馬】,怎麼只有簡體字,還讓不讓我們這些使用繁體字的有一條活路呢 ? 於是港台同胞也自己弄了個繁體字編碼---大五碼【Big-5 字符編解碼器】。

● 當時,同一時間,全世界每個國家,也正在為自己的文字編碼傷腦筋。

● 最後,微軟發話了:顧客就是上帝啊,你們的編碼我都得滿足啊,這樣吧,賣給美國國內的系統就【預設使用ASCII 編解碼器】吧,賣給中國大陸的系統就【預設使用GBK編解碼器】吧,賣給韓國人的系統就【預設使用EUC-KR編解碼器】,...但是為了避免你們誤會我微軟賣給你們的系統功能有差異,我就統一把你們的預設編碼都顯示成【ANSI 編解碼器】吧。---本故事純屬虛構,但「ANSI 編碼」確實只存在於Windows系統。
● 轉載自【每日頭條】資料來源:KKNews https://kknews.cc/zh-tw/code/442kg42.html
原文網址:https://kknews.cc/code/442kg42.html

● 補充:
◇ GBK 是在 GB2312 標準 基礎上擴充後,並兼容 GB2312 的標準(好像還不是中國大陸標準),專門用來解決中文編碼的,是雙字節的,不論中英文都是雙字節的。另外,如果是外國人瀏覽你的 GBK 網頁,需要下載中文語言包才能正確顯示文字,GBK 包含全部中文字符。瀏覽 UTF-8 編碼的網頁,則不需要下載中文語言包,立即能正確顯示文字。

◇ UTF-8 是一種國際化的編碼方式,包含了世界上大部分的語種文字(簡體中文字、繁體中文字、英文、日文、韓文等語言),也兼容 ASCII 碼。UTF-8 編碼是用以解決國際上字符的一種多字節編碼,它對英文使用 8 位(即一個字節),中文使用 24 位(三個字節)來編碼。對於英文字符較多的論壇則用 UTF-8 節省空間。 UTF-8 則包含全世界所有國家需要用到的字符。

● ANSI = American National Standards Institute(美國國家標準學會)。
● 【ANSI 字符編碼】:它是微軟公司提出的一個名稱,不同國家相同的名稱,但實際編碼內容則不同,例如:
◇【English(US) 系統 →ANSI=實際是 ASCII 字符編碼】
◇【簡體中文 系統 →ANSI=實際是 GBK 字符編碼】
◇【繁體中文 系統 →ANSI=實際是 Big-5 字符編碼】
◇【韓文 系統 →ANSI=實際是 EUC-KR 字符編碼】。
◇【日文 系統 →ANSI=實際是 Shift JIS 字符編碼】。
◇ 用另一個角度思維,ANSI 字符編碼 是一種歷史古蹟,應該被保存而不再使用,全面使用更加先進、方便的 Unicode 字符編碼。

 

● 【Unicode】:由於字符編碼不同,電腦在不同國家之間的交流變得很困難,因為不同的編碼會解析出不同的字符,經常會出現亂碼的問題,當互聯網迅速發展,人們迫切的希望有統一的規則, 對所有國家和地區的字符進行編碼,於是 Unicode 就出現了。
◇ Unicode 字符集的編碼範圍是 0x0000 - 0x10FFFF , 可以容納一百多萬個字符, 每個字符都有一個獨一無二的編碼,也即每個字符都有一個二進制數值和它對應。但是,Unicode 只是字符集標準,UTF-8、UTF-16、UTF-32 才是真正的字符編碼使用。


● 【UTF-16】:UTF-16 = 16-bit Unicode Transformation Format 是一種針對Unicode的可變長度字元編碼。這種編碼方式比較特殊, 它將字符編碼成 2 字節 或者 4 字節,小於 0x10000 的字符, 使用 2 個字節存儲,並且是直接存儲 Unicode 碼,不用進行編碼轉換,大於 0x10FFFF 的 Unicode 碼無法用 UTF-16 編碼。


● 【UTF-16LE】:16 位 UCS 轉換格式,Big Endian 大端(最低地址存放高位位元組,符合人們的閱讀習慣)位元組順序。 


● 【UTF-16BE】:16 位 UCS 轉換格式,Little-endian 小端(最高地址存放高位位元組)位元組順序。


● 【UTF-8】:UTF-8 = 8-bit Unicode Transformation Format 是一種針對Unicode的可變長度字元編碼。由於直接使用Unicode編碼效率低下,大量浪費記憶體空間。UTF-8就是為了解決相容ASCII碼而設計,Unicode中前128個字元,使用與ASCII碼相同,這使得原來處理ASCII字元的軟體無須或只須做少部份修改【解碼】,即可繼續使用。因此,它逐漸成為電子郵件、網頁及其他儲存或傳送文字優先採用的編碼方式。

● 【具有BOM的UTF-8】: BOM 是 Byte-Order Mark 字節順序標記, 它常被用來當做標識文件是以 UTF-8、UTF-16 或 UTF-32 編碼的標記。例如:
◇ 檔案的開頭,放置 FE BB BF 字元,表示這個文字檔案是以 UTF-8 編碼。
◇ 檔案的開頭,放置 FE FF 字元,表示這個文字檔案是以 UTF-16BE 編碼。
◇ 檔案的開頭,放置 FF FE 字元,表示這個文字檔案是 UTF-16LE 編碼。

 

● 【Unicode 補完計畫】(Unicode-at-on,簡稱UAO,官方網站使用的識別系統用字是Unicode補完計畫)是台灣電腦使用者針對大五碼(Big-5)延伸的紊亂、以及微軟Code Page 950(Microsoft Windows內建的Big-5轉碼表)未收錄某些常用字(又稱缺字問題)以及缺乏對於倚天中文系統、中國海字集延伸中的簡體中文、日文假名與日文漢字支援等問題所採取的其中一種解決方案(解決缺字問題)。例如:【堃】字,在比較舊的電腦系統中,就算使用Unicode編碼,也打字不出來,【方方土】需要【造字】,安裝「Unicode補完計畫」軟體之後,大量補充常用【特殊字】減少缺字問題,需要各別【造字】的情形也大大減低。除了系統支援,使用者亦需安裝相關字型才可正確顯示文字。

◇ 要留意的是「Unicode補完計畫」不等於Unicode。當有人說「我已安裝Unicode」,通常是將「Unicode補完計畫」和Unicode混為一談。

◇ 「Unicode補完計畫」也不是用來解決軟體顯示亂碼的問題。電腦內要有相關的字型(例如支援整個Unicode漢字的字型),才能在電腦顯示器看到。因為「Unicode補完計畫」只包含編碼轉換表,並不包括字型在內。

◇ 在「Unicode補完計畫」的第2版中,字元的基本來源是參照「中國海字集」,再加上中國海字集所遺漏的簡體中文、日語和部分香港用字而成。

◇ 「Unicode補完計畫」的2.40 Alpha 3版,除了大五碼原有的符號和漢字外,共收錄了4,916個漢字及漢字偏旁、日語的半形及全形假名、俄語西里爾字母等,涵蓋了在GB 2312(不是GBK或GB 18030)、JIS X 0208之中出現的所有漢字,和香港增補字符集之中,Unicode碼落在U+4E00至U+9FA5中 (即Unicode 1.1版定義)的漢字。(因編碼空間不足的關係,並不收錄在香港增補字符集的Unicode擴充漢字)。



=================================
=================================
。解決TXT檔_開啟亂碼的方法

● 方法一:
● 當您在 Windows 使用記事本 開啟TXT檔,發現中文部份是亂碼的時候。
image

 

● 您可以在【檔案總管】中【TXT檔】上,滑鼠右鍵選擇【開啟檔案→IE瀏覽器 Internet Explorer】。
image

● 然後在【IE瀏覽器】中【文字】上,滑鼠右鍵選擇【編碼→繁體中文 或 其他 簡體中文】。
image

● 您可以複製【IE瀏覽器】中【文字】。
image

● 在【記事本】上【貼上】另存新檔,文字即可正常顯示。
image

 

===============================
● 您可以在【檔案總管】中【TXT檔】上,滑鼠右鍵選擇【開啟檔案→Chrome瀏覽器】。
● 您可以在【檔案總管】中【TXT檔】上,滑鼠右鍵選擇【開啟檔案→FireFox瀏覽器】。
image

。解決TXT檔_開啟亂碼的方法
● 方法二:
● 在 Windows 【新版】記事本 開啟.TXT檔,發現中文部份是亂碼的時候,有新方法可以【校正它】。
image

● 在 Windows 【新版】記事本 開啟.TXT檔案時,發現多了【編碼】的選項,雖然是【自動偵測編解碼】,但還是有不正確的情況發生率還頗高的。
image

● 在 Windows 【新版】記事本 開啟.TXT檔案時,發現多了【編碼】的選項,可以選擇【不同的編碼】,來確保【正確格式開啟】。
image
● 終於選擇【正確格式開啟】。
image

小吳老師 整理

 

arrow
arrow
    全站熱搜

    小吳老師 發表在 痞客邦 留言(0) 人氣()