我有一個字符串輸出,它不一定是有效的utf8。我必須將它傳遞給只接受有效的utf8字符串的方法。
因此,我需要將輸出轉換爲最接近有效的utf8字符串,刪除無效的字節或部分。我怎麼能在C++中做到這一點?我不想使用第三方庫。如何在C++中轉換爲utf8字符串
2
A
回答
2
如果你確定你的字符串是有效的UTF-8只有少數腐敗字節,http://utfcpp.sourceforge.net/可以解決這個問題,您應該使用icu::UnicodeString
方法fromUTF8(const StringPiece &utf8)
或toUTF8String(StringClass &result).
+0
這是一個額外的庫... –
0
。從頁面:
#include "utf8.h"
void fix_utf8_string(std::string& str) {
std::string temp;
utf8::replace_invalid(str.begin(), str.end(), back_inserter(temp));
str = temp;
}
您的要求不使用第三方庫使用Unicode數據打交道時,但UTF8-CPP庫是僅標頭是光,你可以得到幾乎是不可能的。
相關問題
- 1. 如何在C/C++中將字符串從UTF8轉換爲Latin1?
- 2. 如何UTF8轉換爲字符串在C#中
- 3. 如何將字符串轉換爲UTF8?
- 4. 如何將utf8字符串轉換爲ascii字符串?
- 5. 將字節[]轉換爲UTF8字符串
- 6. 將字符串轉換爲utf8字節
- 7. 將utf8代碼點字符串轉換爲utf8 <U+0161>轉換爲utf8
- 8. 轉換爲UTF8格式的字符串
- 9. 將unicode字符串轉換爲utf8
- 10. Unicode轉換爲UTF8字符串
- 11. 將latin1字符串轉換爲utf8?
- 12. 將字符串轉換爲UTF8與perl
- 13. 轉換JSON字符串UTF8爲NSDictionary Swift
- 14. 將字符串轉換爲UTF8
- 15. 轉換爲UTF8編碼的字符串在C#
- 16. 將一個UTF8字符串轉換爲一個UTF16字符串在c + +
- 17. 字符串到目標C中的UTF8字符轉換
- 18. 如何將Modified-UTF8中的byte []轉換爲字符串?
- 19. 如何將UTF8字符串轉換爲PHP中的代碼頁?
- 20. 如何UTF8字符串轉換爲UTF-16字符串中的python3
- 21. 如何將UTF8字符串轉換爲字節數組?
- 22. 如何將cp1251字節數組轉換爲utf8字符串?
- 23. 如何將Objective-C字符串轉換爲C字符串?
- 24. C# - 如何JSON字符串轉換爲
- 25. C#:將byte []轉換爲UTF8編碼的字符串
- 26. 整數轉換爲utf8字符串不工作c#
- 27. C++轉換UTF8字符串爲十六進制,反之亦然
- 28. 如何將UTF8字符串轉換爲UTF16
- 29. 如何將UCS2字符串轉換爲UTF8?
- 30. URI轉換爲字符串在C#中
我覺得這不安全。如果你的字符串不是UTF-8,唯一安全的是完全中止。否則,你會打開自己的攻擊。 –
*無效字節*對您而言意味着什麼?你想要一個有效的utf-8流(可能有無效的代碼點或非感性組合)或有效的unicode utf-8編碼流嗎? –
我需要一個有效的unicode utf-8編碼流...刪除所有無效的東西。 –