[英]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,但仍然無法執行您想要的操作。 在編譯時,這些字節要么映射到當前代碼頁中的字符,要么得到警告。
因此,現在創建字符串文字的最便攜方式是顯式地編寫八位字節,就像你一直在做的那樣。
如果要進行運行時轉換,可以選擇幾種方法。
std::codecvt
將寬字符串轉換為UTF-8。 您可以使用這些技術之一編寫一個實現轉換的小實用程序,並將它們輸出為字符串文字所需的顯式八位字節。 然后,您可以將輸出復制並粘貼到源代碼中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.