簡體   English   中英

有沒有一種在Visual Studio中編寫UTF-8八位字節的簡單方法?

[英]Is there an easy way to write UTF-8 octets in Visual Studio?

我有一個問題,我需要在C ++源代碼中使用標准字符類型的UTF-8編碼字符串,如下所示:

char* twochars = "\xe6\x97\xa5\xd1\x88";

通常,如果我想寫一個UTF-8字符,我需要使用上面的八位字節。 Visual Studio中有什么東西(我使用VS 2013 Ultimate)可以讓我只編寫例如“ĄĘĆŻ”並自動將每個字符轉換為多個UTF-8八位字節,如上例所示? 或者我應該使用const wchar_t*並找到一個可以將寬字符串轉換為UTF-8編碼的標准字符串字符串的庫?

如果沒有這樣的東西,你能為此建議任何外部軟件嗎? 我真的不想瀏覽每個符號/非拉丁字母的字符映射。

對不起我的英文,提前致謝。

您可以使用仍未記錄的 pragma指令execution_character_set("utf-8") 這樣你的char字符串將在你的二進制文件中保存為UTF-8。 順便說一句,這個pragma僅在Visual C ++編譯器中可用。

#include <iostream>
#include <cstring>

#pragma execution_character_set("utf-8")

using namespace std;

char *five_chars = "ĄĘĆŻ!";

int _tmain(int argc, _TCHAR* argv[])
{
    cout << "This is an UTF-8 string: " << five_chars << endl;
    cout << "...it's 5 characters long" << endl;
    cout << "...but it's " << strlen(five_chars) << " bytes long" << endl;
    return 0;
}

使用當前版本的VC ++,無法直接在UTF-8中編寫字符串文字。 未來版本應具有UTF-8字符串文字

我嘗試將非ASCII文本直接粘貼到源文件中的字符串文字中,並將文件保存為UTF-8。 在十六進制編輯器中查看源文件,確認它已保存為UTF-8,但仍然無法執行您想要的操作。 在編譯時,這些字節要么映射到當前代碼頁中的字符,要么得到警告。

因此,現在創建字符串文字的最便攜方式是顯式地編寫八位字節,就像你一直在做的那樣。

如果要進行運行時轉換,可以選擇幾種方法。

  1. Windows API具有WideCharToMultiByte ,它可以將文本作為UTF-16並將其轉換為UTF-8等多字節編碼。
  2. 如果您使用的是足夠新版本的編譯器和C ++運行時,則可以使用std::codecvt將寬字符串轉換為UTF-8。

您可以使用這些技術之一編寫一個實現轉換的小實用程序,並將它們輸出為字符串文字所需的顯式八位字節。 然后,您可以將輸出復制並粘貼到源代碼中。

暫無
暫無

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

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