gnucash stable: Mingw64: Use a manifest to force the codepage to UTF8

John Ralls jralls at code.gnucash.org
Mon Sep 14 17:48:53 EDT 2026


Updated	 via  https://github.com/Gnucash/gnucash/commit/038f90a7 (commit)
	from  https://github.com/Gnucash/gnucash/commit/0eb3e8eb (commit)



commit 038f90a798f205c4495062373aa5628bac39347a
Author: John Ralls <jralls at ceridwen.us>
Date:   Sun Sep 13 15:45:10 2026 -0700

    Mingw64: Use a manifest to force the codepage to UTF8
    
    Fixes a variety of path with special character problems on Windows.
    
    Assisted-by: Gemini <https://gemini.google.com>
    Signed-off: John Ralls <jralls at ceridwen.us>

diff --git a/gnucash/CMakeLists.txt b/gnucash/CMakeLists.txt
index 731ad4adf0..69259a0257 100644
--- a/gnucash/CMakeLists.txt
+++ b/gnucash/CMakeLists.txt
@@ -93,6 +93,7 @@ set (gnucash_SOURCES
 
 if (MINGW)
   list(APPEND gnucash_SOURCES "gnucash-locale-windows.c")
+  list(APPEND gnucash_SOURCES "gnucash-manifest.rc")
 elseif (MAC_INTEGRATION)
     list(APPEND gnucash_SOURCES "gnucash-locale-macos.mm")
 endif()
@@ -121,6 +122,7 @@ set(gnucash_cli_SOURCES
 
 if (MINGW)
   list(APPEND gnucash_cli_SOURCES "gnucash-locale-windows.c")
+  list(APPEND gnucash_cli_SOURCES "gnucash-manifest.rc")
 elseif (MAC_INTEGRATION)
     list(APPEND gnucash_cli_SOURCES "gnucash-locale-macos.mm")
 endif()
@@ -271,7 +273,8 @@ install(FILES ${ENVIRONMENT_FILE_DIR}/environment DESTINATION
 
 set_local_dist(gnucash_DIST_local CMakeLists.txt environment.in generate-gnc-script
     gnucash.cpp gnucash-commands.cpp gnucash-cli.cpp gnucash-core-app.cpp
-    gnucash-locale-macos.mm gnucash-locale-windows.c gnucash.rc.in gnucash-valgrind.in
+    gnucash-locale-macos.mm gnucash-locale-windows.c gnucash.rc.in
+    gnucash-valgrind.in gnucash-manifest.rc gnucash-utf8.manifest
     ${gnucash_GRESOURCES}
     ${gnucash_noinst_HEADERS} ${gnucash_EXTRA_DIST})
 
diff --git a/gnucash/gnucash-manifest.rc b/gnucash/gnucash-manifest.rc
new file mode 100644
index 0000000000..240b875b8e
--- /dev/null
+++ b/gnucash/gnucash-manifest.rc
@@ -0,0 +1,4 @@
+#include <windows.h>
+// CREATEPROCESS_MANIFEST_RESOURCE_ID = 1
+// RT_MANIFEST is the resource type
+1 RT_MANIFEST "gnucash-utf8.manifest"
diff --git a/gnucash/gnucash-utf8.manifest b/gnucash/gnucash-utf8.manifest
new file mode 100644
index 0000000000..957e5931e6
--- /dev/null
+++ b/gnucash/gnucash-utf8.manifest
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+
+  <application>
+    <windowsSettings>
+      <activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
+    </windowsSettings>
+  </application>
+</assembly>



Summary of changes:
 gnucash/CMakeLists.txt        | 5 ++++-
 gnucash/gnucash-manifest.rc   | 4 ++++
 gnucash/gnucash-utf8.manifest | 9 +++++++++
 3 files changed, 17 insertions(+), 1 deletion(-)
 create mode 100644 gnucash/gnucash-manifest.rc
 create mode 100644 gnucash/gnucash-utf8.manifest



More information about the gnucash-changes mailing list