[英]What's the best way to identify unicode encoded text files in Windows?
我正在開發一個代碼庫,由於多個團隊成員使用不同的編輯器(以及默認設置)進行開發,因此散布了一些unicode編碼文件。 我想通過查找所有unicode編碼文件並將它們轉換回ANSI編碼來清理我們的代碼庫。
任何關於如何完成這項任務的“發現”部分的想法都將得到真正的體會。
請參閱“如何檢測文本文件的字符編碼?”或“如何可靠地猜測編碼[...]?”
EF BB BF
,但不要依賴它。 我們的代碼庫不包含任何非ASCII字符。 我將嘗試在代碼庫中的文件中查找BOM。 謝謝你的澄清。
嗯,這使事情變得簡單了很多 。 沒有非ASCII字符的UTF-8 是 ASCII。
Unicode是標准,它不是編碼。 有許多編碼實現Unicode,包括UTF-8,UTF-16,UCS-2等。 將這些編碼中的任何一種轉換為ASCII完全取決於“不同編輯者”使用的編碼方式。
某些編輯器在Unicode文件的開頭插入BOM的字節順序標記。 如果您的編輯器這樣做,您可以使用它們來檢測編碼。
ANSI是一個標准組織,已經發布了幾種數字字符數據編碼。 MS DOS使用並在Windows中支持的“ANSI”編碼實際上是CP-1252,而不是ANSI標准。
您的代碼庫是否包含非ASCII字符? 使用Unicode編碼而不是ANSI編碼或CP-1252可能具有更好的兼容性。
實際上,如果你想在Windows中找到一個文件是unicode,只需在文件上運行findstr,找到你知道的字符串。
findstr / I / C:“SomeKnownString”file.txt
它會變回空洞。 然后,確保在您知道的文件或數字上運行findstr:
FindStr / I / C:“P”file.txt
您可能會遇到很多事情,關鍵是它們會分開。 這是文件是unicode而不是ascii的標志。
希望這可以幫助。
如果您正在尋找程序化解決方案, IsTextUnicode()可能是一個選項。
這很難說,但我首先要尋找一個BOM。 大多數編寫Unicode文件的Windows程序都會發出BOM。
如果您的代碼庫中存在這些文件,則可能是他們編譯的。 您可能會問自己是否真的需要這樣做“整理”。 如果您確實需要這樣做,那么我會問處理這些文件的工具鏈如何發現它們的編碼。 如果您知道,那么您將能夠使用相同的診斷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.