set pythons 'sys.stdout' encoding to utf-8 and use surrogateescape error handler.
[blender.git] / source / blender / python / intern / bpy_interface.c
index cfd8d9f433bd526251affa5c84436fb5a95d6ce3..a96b8209d91482b32e94e45f42322041f222f8e0 100644 (file)
@@ -203,6 +203,13 @@ void BPY_python_start(int argc, const char **argv)
        /* allow to use our own included python */
        PyC_SetHomePath(BLI_get_folder(BLENDER_SYSTEM_PYTHON, NULL));
 
+       /* without this the sys.stdout may be set to 'ascii'
+        * (it is on my system at least), where printing unicode values will raise
+        * an error, this is highly annoying, another stumbling block for devs,
+        * so use a more relaxed error handler and enforce utf-8 since the rest of
+        * blender is utf-8 too - campbell */
+       BLI_setenv("PYTHONIOENCODING", "utf-8:surrogateescape");
+
        /* Python 3.2 now looks for '2.xx/python/include/python3.2d/pyconfig.h' to
         * parse from the 'sysconfig' module which is used by 'site',
         * so for now disable site. alternatively we could copy the file. */