CString результаты в?при попытке назначить _variant_t.bstrVal, который содержит русские символы - PullRequest
0 голосов
/ 23 ноября 2018

Я работаю над настольным приложением.Я сталкиваюсь с этой проблемой.

enter image description here

Как вы можете видеть на скриншоте, когда этот код выполняется, он присваивает русскую строку CString, но его значение искажается.

CString csField = vField.bstrVal;

BstrVal содержит Створное O ^ Л.Когда я назначаю его CString, он становится ?? s.

1 Ответ

0 голосов
/ 03 декабря 2018

* Помните : при возникновении этой проблемы сначала проверьте текущую культуру или локаль.

Ответ на проблему:

строка в моем коде, которая устанавливала текущую культуру в инвариантную культуру.

Странная вещь, которую я не мог понять, это когда я получаю текущую локаль с помощью setLocale (LC_ALL, NULL) itвозвращал одно и то же, независимо от моей текущей культуры: русский или инвариант .

Чтобы решить эту проблему, я удалил этот код, и теперь он работает нормально.

//Thread::CurrentThread->CurrentCulture = gcnew CultureInfo("");
...