What is state of the art: Unicode file names on Windows

Using UTF-8 is clearly the goal. The only question is how to reach it.

We could declare that all strings on VTK public interfaces are UTF-8 encoded (unless documented otherwise) and treat all non-compliances as bugs. However, it may take a long time until all the non-compliances are found and fixed, unless there is dedicated funding to get done with this quickly. Or maybe it could be a distributed community effort (developers could sign up for reviewing, fixing, adding tests to a couple of classes each)?

If the transition cannot be done quickly then it may be safer to use vtkUnicodeString (or introduce a new type or macro) to clearly distinguish variables that store text with UTF-8 encoding from those that use unknown encoding. If there is no automatic conversion between the UTF-8 and unknown text types then the compiler can ensure that there are no errors.