How do I get my ANSI based application to run correctly?

A common question is "how do I get my ANSI based code page application to run on a system that has a different code page?"

The most obvious solution is to use Unicode :)  Then you won't have the code page messiness that leads to this kind of problem.  For some legacy applications you may need a stop-gap measure until a Unicode version is created, or you may have legacy applications that don't have any support.

The system code page impacts all ANSI applications and all users of the machine, so it is a really terrible idea to change the system code page "for" the user so that your application might work as it expects.  Worst case you might explain the limitation to you user and ask them to change their code page, but note that could create compatibility problems with their other applications and corrupt their data if they don't fully understand the impact of changing the system code page.

Another possible solution is the "Microsoft AppLocale Utility" at https://www.microsoft.com/globaldev/tools/apploc.mspx.  This allows applications to be run using a different code page than the system default.  This can also be confusing if data is exchanged with other applications, but it may provide an acceptable workaround until a Unicode solution is available for a specific problem.