簡體   English   中英

如何檢查文本文件是否以UTF-8編碼?

[英]How to check whether text file is encoded in UTF-8?

如何檢查文本文件是否在C ++中以UTF-8編碼?

嘗試將其讀作UTF-8並查看UTF-8編碼是否損壞,如果沒有,如果只有有效的Unicode點。

但仍然不能保證文件是UTF-8或ASCII或其他東西。 你如何解釋包含單個字節的文件,字母A ASCII? UTF-8? 其他? 同樣,如果文件以純粹的運氣開始使用BOM但是不是真正的UTF-8或者不打算是UTF-8怎么辦?

這篇文章可能會引起關注。

您永遠無法確定任何二進制數據都是為了表示UTF-8。 但是,您始終可以檢查它是否可以解釋為UTF-8。 最簡單的方法是嘗試轉換它(比如UTF-32),看看你是否沒有錯誤。 如果您只需要驗證,那么您可以在不實際編寫輸出的情況下執行相同的操作。 (你需要自己寫這個,但這很容易。)

請注意,出於安全原因,必須在第一次出錯時完全中止轉換,而不是試圖以某種方式“恢復”。

嘗試轉換為UTF-16。 如果沒有錯誤,那很可能是UTF-8。 但無論你做什么,它仍然是最好的猜測。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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