FIX: Resolve paths with non-ASCII characters in Windows #376
+431
−29
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Work Item / Issue Reference
Summary
This pull request refactors the way file system paths are handled in the
mssql_python/pybind/ddbc_bindings.cppfile to use C++17'sstd::filesystemfor improved cross-platform compatibility and proper handling of UTF-8 paths. The changes simplify and unify path manipulation logic, especially for dynamic library loading, and ensure correct encoding is used on all platforms.Cross-platform and encoding improvements:
GetModuleDirectory()withstd::filesystem::pathto extract the module directory in a cross-platform and UTF-8 safe manner. This removes the need for separate Windows and Unix/macOS code paths.fs::path::c_str(), which provides a correctly encodedwchar_t*forLoadLibraryW, ensuring proper handling of UTF-8 paths. This change is applied both inLoadDriverLibraryand when loadingmssql-auth.dllinLoadDriverOrThrowException(). [1] [2]