WideCharToMultiByte не конвертирует японский язык в ОС Engli sh - PullRequest
0 голосов
/ 16 июня 2020

Мне нужно преобразовать имена файлов из System.String в std::string. Я использую имена файлов на японском и английском языках sh.

Для имен файлов на английском языке sh проблем нет.

Только имена файлов на японском языке не преобразуются в std::string в Engli sh Windows 10.

Я использовал WideCharToMultiByte() и кодовую страницу 932.

std::string marshal_as(System::String^ str)
{
    std::string convertedstring;
    size_t _size = 0;
    cli::pin_ptr<const wchar_t> _pinned_ptr = PtrToStringChars(str);
    _size = WideCharToMultiByte(932, 0, _pinned_ptr, str->Length, 0, 0, 0, 0);
    if (_size > 0)
    {
        convertedstring.resize(_size);
        char* buffer = &convertedstring[0];
        WideCharToMultiByte(932, 0, _pinned_ptr, -1, &buffer[0], _size, 0, 0);

    }

    return convertedstring;
}

Здесь str это "C:\\files\\ブ種別.pdf"

convertedstring is "C:\\files\\ƒuŽí•Ê.pdf"

Может ли кто-нибудь помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 22 июля 2020

Моя проблема исправлена. Я включил бета-версию: используйте Unicode UTF-8 для поддержки всех языков по всему миру в настройках региона на панели управления.

...