簡體   English   中英

在Windows中識別unicode編碼文本文件的最佳方法是什么?

[英]What's the best way to identify unicode encoded text files in Windows?

我正在開發一個代碼庫,由於多個團隊成員使用不同的編輯器(以及默認設置)進行開發,因此散布了一些unicode編碼文件。 我想通過查找所有unicode編碼文件並將它們轉換回ANSI編碼來清理我們的代碼庫。

任何關於如何完成這項任務的“發現”部分的想法都將得到真正的體會。

請參閱“如何檢測文本文件的字符編碼?”“如何可靠地猜測編碼[...]?”

  • 可以通過驗證來檢測UTF-8。 您也可以查找BOM EF BB BF ,但不要依賴它。
  • 可以通過查找BOM來檢測UTF-16。
  • 可以通過驗證或BOM檢測UTF-32。
  • 否則假設ANSI代碼頁。

我們的代碼庫不包含任何非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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM