The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何讓 Python 程式正確的處理 UTF-8 字元編碼

最近在嘗試微軟最近推出的 MarkItDown 工具,它使用 Python 開發,可用於將各種文件檔案轉換為 Markdown 格式,支援的文件格式也非常多,這在 AI 盛行的時代是非常有用的。因為文件換為 Markdown 格式之後,可以讓大語言模型進行分析。不過我在 PowerShell 底下使用的時候,沒有意外的又出意外了,因為它無法正確的處理 UTF-8 字元的輸入輸出,所以只要遇到中文就掛掉,真的很煩,這種問題都不知道處理幾次了。這篇文章我打算來介紹如何讓 Python 程式正確的處理 UTF-8 字元。

... 繼續閱讀 ...

使用 Visual Studio 2022 可透過 .editorconfig 鎖定文字檔案的儲存編碼格式

我們長久以來一直有一個蠻困擾的事情,就是 Visual Studio 2022 在存檔的時候,他不一定會將程式碼自動儲存成 UTF-8 編碼,若以 Big5 編碼來儲存文字檔案時,在其他程式讀取時就有可能出現異常。例如我們的程式碼都會需要 git push 到 Azure DevOps 的 Repos 中,若程式檔的編碼為 Big5 的時候,這些中文字在 Azure DevOps 上面都無法正常顯示,也就是我在 Code Review 時看到的都會是亂碼,真的是不勝其擾。這篇文章我就來告訴你怎樣解決!

... 繼續閱讀 ...

如何強迫 Azure CLI 一定要以 UTF-8 輸出以避免亂碼問題

今天又解決了一個卡了我幾個月的問題,這次是 Azure CLI 的輸出編碼問題,只要在一種特殊的條件組合下,就會遇到的問題,我一直都知道怎樣避開這個問題,但卻一直無法理解原因。今天這篇文章我就來說說這個特殊的狀況,幫助大家未來可以順利避開這個問題。

... 繼續閱讀 ...

透過 7-Zip 壓縮 ZIP 檔案時須注意中文檔名無法正確解壓縮的問題

昨天在授課的時候,由於課堂上提供給學員的壓縮檔案中目錄名稱檔案名稱有中文字的關係,導致全班有 3 位學員解壓縮之後這些目錄與檔案全部呈現亂碼,無法開啟與閱讀。經過一番研究之後發現,原來 7-Zip 在壓縮檔案的時候,預設會將檔名編碼為本機電腦系統設定的 Code Page,而不是使用 UTF-8 編碼,這會導致解壓縮的人只要不是用相同的 Code Page 設定,就會解壓縮失敗,檔名出現亂碼。本篇文章就來說說這個問題的始末與解決方案!

... 繼續閱讀 ...

Jenkins on Windows 心得分享 (03):有效避免記錄檔或訊息出現亂碼的方法

我想大家都有這種經驗,使用一個國外發展的軟體,進到台灣後經常會遇到許多中文亂碼的問題。想當然爾 Jenkins 也不例外,在許多使用情境下,遇到中文都會有亂碼的情況,本篇文章我要來分享關於這個「中文亂碼」的背景知識與解決方案。

... 繼續閱讀 ...

在 Mac 電腦壓縮含有中文檔名的 ZIP 檔案如何正確在 Windows 下解壓縮

我們公司合作的網頁設計師使用的 Mac 電腦不是 MBP (MacBook Pro) 就是 MBA (MacBook Air),有些已經很習慣用 Dropbox 交換檔案,不過還是有些設計師並沒有在用,而會直接透過壓縮檔的方式當成附件寄出,在 Mac 電腦裡內建的壓縮格式為十分常見的 ZIP 檔案格式,但是有個問題卻一直困擾著我,那就是他們在 Mac 電腦上壓縮過的 ZIP 檔案跟 Windows 常見的壓縮編碼不相容,如果壓縮檔裡的檔案檔名含有任何非英文的字元(例如中文檔名),解壓縮時就會發生嚴重的亂碼問題,直到這幾天我才找到解決方法。

... 繼續閱讀 ...

關於各瀏覽器對【表單內容送出】的編碼處理補充說明

網友 chihwen 提供了一條關於 瀏覽器對 "表單內容送出" 的編碼處理 的新線索,經我詳細測試下發現各瀏覽器之間的確還是有不同的處理規則,尤其是 IE 瀏覽器對這個屬性的實做不太老實進行了智慧型判斷處理,所以有必要特別說明,請看以下分析。

... 繼續閱讀 ...

關於各瀏覽器對網頁與文字編碼的處理規則研究整理

文字編碼 (Text Encoding) 是一個頗為複雜的議題,現在的開發人員很幸福,只要遇到不懂的編碼問題就用 UTF-8 編碼解決,想當初我在開發多奇中文繁簡轉換大師產品時遇到的編碼問題百百種,可說是養成了對於文字編碼的敏感度,之後遇到編碼問題就比較容易能理解與解決問題,今天我來分享「各瀏覽器」對於文字編碼的處理細節,由於這些資訊在網路上又多又雜,似乎不易整理,以下部分內容是我親自實驗並研究出來的心得,如有謬誤之處敬請告知。

... 繼續閱讀 ...

如何利用 .NET 對 byte[] 進行 Reguar Expression 比對

記得以前在寫 Perl 或 PHP 時都可以直接用內建的 Regular Expression 功能直接比對二進位的字串內容,但到了 .NET 就不知道怎麼做了,因為當你使用 System.Text.RegularExpressions 命名空間所接受的輸入參數只有 String 型別,並不接受 byte[] 位元陣列。

... 繼續閱讀 ...