簡體   English   中英

驗證Windows C ++應用程序中的輸入UTF-8序列

[英]Validating an input UTF-8 sequence in a Windows C++ application

我想驗證用C ++編寫的Windows應用程序中的輸入UTF-8序列。

我的想法是簡單地調用MultiByteToWideChar() ,只是請求目標字符串長度(而不是將整個字符串轉換為UTF-16),並使用MB_ERR_INVALID_CHARS標志。
然后,如果函數返回0(表示失敗)並且GetLastError()返回ERROR_NO_UNICODE_TRANSLATION ,則表示輸入的UTF-8序列包含一些無效數據。

有更好的方法嗎?

如果不了解MBTWC的內部結構,就很難指定更好的方法。 它至少需要對MBTWC和任何替代方法的使用進行定時測量(如果認為更快更好)。 實現您自己的UTF-8驗證器將是一個允許進行比較的開始。 你可以在這里找到一個很好的參考實現,看看接受的答案。 Java代碼很容易轉換為C ++,並為您提供了充分的機會來確定它是否更好(針對您的情況)並在需要時允許進一步改進。

暫無
暫無

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

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