From 7dcfd4ae195d61ea85583f814afcc562a6bac3b4 Mon Sep 17 00:00:00 2001 From: Peter Bieringer Date: Tue, 21 Apr 2026 18:56:53 +0200 Subject: [PATCH] sharing/csv: honor stock encoding --- radicale/sharing/__init__.py | 2 ++ radicale/sharing/csv.py | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/radicale/sharing/__init__.py b/radicale/sharing/__init__.py index 5cd07546..b60cd353 100644 --- a/radicale/sharing/__init__.py +++ b/radicale/sharing/__init__.py @@ -138,6 +138,7 @@ class BaseSharing(ApplicationBase): _rights: rights.BaseRights _auth_delay: float _enabled: bool = False + _encoding: str default_permissions_create_token: str default_permissions_create_map: str sharing_db_type: str @@ -154,6 +155,7 @@ class BaseSharing(ApplicationBase): self._rights = rights.load(configuration) self._storage = storage.load(configuration) self._auth_delay = configuration.get("auth", "delay") + self._encoding = configuration.get("encoding", "stock") self._validate_user_value = configuration.get("server", "validate_user_value") self._validate_path_value = configuration.get("server", "validate_path_value") # Sharing diff --git a/radicale/sharing/csv.py b/radicale/sharing/csv.py index 473daee0..53caf6eb 100644 --- a/radicale/sharing/csv.py +++ b/radicale/sharing/csv.py @@ -400,7 +400,7 @@ class Sharing(sharing.BaseSharing): logger.debug("sharing database load begin: %r", file) self._sharing_cache = [] with self._storage.acquire_lock("r", None): - with open(file, 'r', newline='') as csvfile: + with open(file, 'r', newline='', encoding=self._encoding) as csvfile: reader = csv.DictReader(csvfile, fieldnames=sharing.DB_FIELDS_V1, delimiter=';') self._lines = 0 for row in reader: @@ -453,7 +453,7 @@ class Sharing(sharing.BaseSharing): return True def _write_csv(self, file: str) -> bool: - with open(file, 'w', newline='') as csvfile: + with open(file, 'w', newline='', encoding=self._encoding) as csvfile: writer = csv.DictWriter(csvfile, fieldnames=sharing.DB_FIELDS_V1, delimiter=';') writer.writerows(self._sharing_cache) return True