diff --git a/.gitattributes b/.gitattributes
index cfb1e6b81b..3990105915 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -22,3 +22,4 @@ packages/mobile-client/android/gradlew.bat text eol=crlf
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
+packages/loot-core/src/mocks/files/utf-16*.csv binary
diff --git a/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-import-csv-file-twice-1-chromium-linux.png b/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-import-csv-file-twice-1-chromium-linux.png
index dd7aea0f5d..57de7f15c6 100644
Binary files a/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-import-csv-file-twice-1-chromium-linux.png and b/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-import-csv-file-twice-1-chromium-linux.png differ
diff --git a/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-import-csv-file-twice-2-chromium-linux.png b/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-import-csv-file-twice-2-chromium-linux.png
index 082448f1e0..fa03e90777 100644
Binary files a/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-import-csv-file-twice-2-chromium-linux.png and b/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-import-csv-file-twice-2-chromium-linux.png differ
diff --git a/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-import-csv-file-twice-3-chromium-linux.png b/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-import-csv-file-twice-3-chromium-linux.png
index e821172a4e..e1c91a0e2b 100644
Binary files a/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-import-csv-file-twice-3-chromium-linux.png and b/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-import-csv-file-twice-3-chromium-linux.png differ
diff --git a/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-1-chromium-linux.png b/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-1-chromium-linux.png
index 806e6d6329..912f3abde9 100644
Binary files a/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-1-chromium-linux.png and b/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-1-chromium-linux.png differ
diff --git a/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-2-chromium-linux.png b/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-2-chromium-linux.png
index b001468f27..84a942efb2 100644
Binary files a/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-2-chromium-linux.png and b/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-2-chromium-linux.png differ
diff --git a/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-3-chromium-linux.png b/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-3-chromium-linux.png
index aa2814079b..b433d9468c 100644
Binary files a/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-3-chromium-linux.png and b/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-3-chromium-linux.png differ
diff --git a/packages/desktop-client/src/components/modals/ImportTransactionsModal/ImportTransactionsModal.tsx b/packages/desktop-client/src/components/modals/ImportTransactionsModal/ImportTransactionsModal.tsx
index d4bba99d7a..5fd2b59d73 100644
--- a/packages/desktop-client/src/components/modals/ImportTransactionsModal/ImportTransactionsModal.tsx
+++ b/packages/desktop-client/src/components/modals/ImportTransactionsModal/ImportTransactionsModal.tsx
@@ -176,6 +176,7 @@ type LastParse = {
const parseOptionKeys = [
'hasHeaderRow',
'delimiter',
+ 'encoding',
'fallbackMissingPayeeToMemo',
'swapPayeeAndMemo',
'skipStartLines',
@@ -242,6 +243,9 @@ export function ImportTransactionsModal({
prefs[`csv-delimiter-${accountId}`] ||
(filename.endsWith('.tsv') ? '\t' : ','),
);
+ const [csvEncoding, setCsvEncoding] = useState(
+ prefs[`csv-encoding-${accountId}`] || 'auto',
+ );
const [skipStartLines, setSkipStartLines] = useState(
parseInt(prefs[`csv-skip-start-lines-${accountId}`], 10) || 0,
);
@@ -477,6 +481,7 @@ export function ImportTransactionsModal({
const fileType = getFileType(originalFileName);
const parseOptions = getParseOptions(fileType, {
delimiter,
+ encoding: csvEncoding,
hasHeaderRow,
skipStartLines,
skipEndLines,
@@ -509,6 +514,7 @@ export function ImportTransactionsModal({
}, [
originalFileName,
delimiter,
+ csvEncoding,
hasHeaderRow,
skipStartLines,
skipEndLines,
@@ -559,6 +565,7 @@ export function ImportTransactionsModal({
const fileType = getFileType(res[0]);
const parseOptions = getParseOptions(fileType, {
delimiter,
+ encoding: csvEncoding,
hasHeaderRow,
skipStartLines,
skipEndLines,
@@ -733,6 +740,7 @@ export function ImportTransactionsModal({
[`csv-mappings-${accountId}`]: JSON.stringify(fieldMappings),
});
savePrefs({ [`csv-delimiter-${accountId}`]: delimiter });
+ savePrefs({ [`csv-encoding-${accountId}`]: csvEncoding });
savePrefs({ [`csv-has-header-${accountId}`]: String(hasHeaderRow) });
savePrefs({
[`csv-skip-start-lines-${accountId}`]: String(skipStartLines),
@@ -1188,6 +1196,34 @@ export function ImportTransactionsModal({
style={{ width: 50 }}
/>
+