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 }} /> +