Преобразование из char16_t (utf16) в utf8 не работает в visual studio 2015 и 2017 - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу преобразовать тип данных char16_t в utf8, и я написал для этого следующий код:

// utf16 String
char16_t *wchs = u"UTF16 string";
// A converter object
wstring_convert<codecvt_utf8_utf16<char16_t>, char16_t> conv;
// Convert from utf16 to utf8
string str = conv.to_bytes(wchs);
// print the UTF-16 string after converting to UTF-8
cout << str << endl;

Предыдущий код не работает в Visual Studio, будь то 2015 или 2017 , в частности, с типом данных "char16_t" и выдает ошибку:
error LNK2001: unresolved external symbol "public: static class std::locale::id std::codecvt<char16_t,char,struct _Mbstatet>::id" (?id@?$codecvt@_SDU_Mbstatet@@@std@@2V0locale@2@A),
, но хорошо работает в компиляторе G CC.

Почему это произошло и как решить эту проблему ?

1 Ответ

2 голосов
/ 24 апреля 2020

Возможно, вам не повезло, так как это похоже на ошибку Visual Studio, поскольку на странице сообщества разработчиков VS есть как минимум 3 сообщения, описывающих данную проблему

, где все они заявляют, что оно было

исправлено в: Visual Studio 2019 версия 16.2

без указания бэкпорт к VS 2015 или даже к VS 2017.

...