簡體   English   中英

處理utf8編碼的char *數組

[英]Handling the utf8 encoded char* array

文件包含非拉丁內容,並以UTF8編碼。 當前,現有代碼使用“ fopen ”打開文件,對其進行解析並使用非拉丁內容調用我的validate函數,並將數據作為char*傳遞。

void validate(const char* str)
{
    ....
}

我必須對傳遞的char數組進行一些驗證。

該應用程序使用Sun C++ 5.11 ,但我認為它不支持unicode (我在Sun C ++ 5.11上搜索了unicode支持,但沒有獲得有關unicode支持的任何正確的指針。因此,我編寫了一個簡單的程序來檢查Sun C ++是否支持unicode並且該程序未編譯)。

如何對輸入的char*進行驗證? 可以使用wchar_t嗎?

該應用程序使用<compiler> ,我認為它不支持unicode

這不是問題。 您只需要編譯器支持unicode,即可將unicode字符串文字嵌入代碼中,或者只支持固定寬度的字符類型來表示UTF-16或UTF-32。 您的Unicode是UTF-8,來自用戶輸入,因此不需要Unicode編譯器支持。

如何對輸入的char*進行驗證?

C ++標准庫幾乎沒有用於處理unicode的工具。 提供的工具主要包括不同unicode格式之間的轉換,甚至那些工具在C ++ 11之前都不可用。

輸入和輸出大部分只是字節的復制,因此不需要大量處理。 對於其他處理(您可能需要“驗證”),您將需要自己實施工具或使用第三方工具。 如果您選擇實現自己,則需要參考unicode標准的〜1000頁: http : //www.unicode.org/versions/Unicode9.0.0/UnicodeStandard-9.0.pdf

可以使用wchar_t嗎?

wchar_t是用於系統的本機寬字符編碼的本機寬字符類型。 UTF-8不使用寬代碼單元。

暫無
暫無

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

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