Ticket #287 (closed enhancement: fixed)

Opened 2 years ago

Last modified 15 months ago

unicode under windows

Reported by: setosha Owned by: michael
Priority: normal Component: FFmpeg
Version: unspecified Keywords: unicode windows
Cc: setosha@… Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

It will be nice to make unicode wrapper for main() under win32.

somthing like this

int wmain(int argc, wchar_t* argv[])
{
    char** cargs = new char*[argc];
    for(int i=0; i<argc; ++i)
    {
        int len = WideCharToMultiByte(CP_UTF8, 0, argv[i], -1, NULL, -1, NULL, NULL);
        if(len < 0)
            len = 0;
        cargs[i] = new char[len+1];
        len = WideCharToMultiByte(CP_UTF8, 0, argv[i], -1, cargs[i], len, NULL, NULL);
        cargs[i][len] = 0;
    }
    int ret = ffmpeg_main(argc, cargs); // rename your main
    for(int i=0; i<argc; ++i)
        delete[] cargs[i];
    delete[] cargs;

    return ret;
}

ffmpeg -metadata treats input char strings as utf8 strings, but under windows it's not true. They comes to main() as local single char encoding. Determinate local encoding in tagger not always right. Because some symbols may not covered by local encoding

Change History

comment:1 Changed 2 years ago by setosha

But opening files trough fopen or fstream. Those function will fails on symbols which not in latin1 codepage

comment:2 Changed 21 months ago by michael

note, few ffmpeg developers have windows systems, thus it might help if you send a patch

comment:3 Changed 15 months ago by reimar

  • Status changed from new to closed
  • Resolution set to fixed

This issue has been fixed differently a long time ago.

Note: See TracTickets for help on using tickets.