diff --git a/testcases/db/diacritical/compressed.orig.xml b/testcases/db/diacritical/compressed.orig.xml
new file mode 100644
index 00000000..afc51750
--- /dev/null
+++ b/testcases/db/diacritical/compressed.orig.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testcases/db/diacritical/compressed.result.xml b/testcases/db/diacritical/compressed.result.xml
new file mode 100644
index 00000000..c7715761
--- /dev/null
+++ b/testcases/db/diacritical/compressed.result.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testcases/db/diacritical/uncompressed-to-compressed.orig.xml b/testcases/db/diacritical/uncompressed-to-compressed.orig.xml
new file mode 100644
index 00000000..ba957cd6
--- /dev/null
+++ b/testcases/db/diacritical/uncompressed-to-compressed.orig.xml
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testcases/db/diacritical/uncompressed-to-compressed.result.xml b/testcases/db/diacritical/uncompressed-to-compressed.result.xml
new file mode 100644
index 00000000..c7715761
--- /dev/null
+++ b/testcases/db/diacritical/uncompressed-to-compressed.result.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testcases/db/diacritical/uncompressed.orig.xml b/testcases/db/diacritical/uncompressed.orig.xml
new file mode 100644
index 00000000..ba957cd6
--- /dev/null
+++ b/testcases/db/diacritical/uncompressed.orig.xml
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testcases/db/diacritical/uncompressed.result.xml b/testcases/db/diacritical/uncompressed.result.xml
new file mode 100644
index 00000000..63464f0c
--- /dev/null
+++ b/testcases/db/diacritical/uncompressed.result.xml
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testcases/integration-tests/check_diacritical.sh b/testcases/integration-tests/check_diacritical.sh
new file mode 100644
index 00000000..838ef2f8
--- /dev/null
+++ b/testcases/integration-tests/check_diacritical.sh
@@ -0,0 +1,48 @@
+_checks[check_diacritical]="Compatibility: Diacritical characters in v7 database files."
+_context[check_diacritical]="
What this test will do:
+
+- This test checks whether a version 7 database file with diacritical characters in categories and tags is properly handled.
+- After you close this dialog, KPhotoAlbum will be started 3 times in a row.
+- This test case was inspired by Bug #403668
+
+
+What you have to do:
+
+- Each time KPhotoAlbum starts, save the database and exit KPhotoAlbum.
+
"
+check_diacritical()
+{
+ local check_name="check_diacritical"
+ local check_dir="$TEMPDIR/$check_name"
+ local data_dir="$mydir/db/diacritical"
+ setup_check "$check_dir" || return $result_err_setup
+ # not needed in this scenario:
+ rm -r "$check_dir/db"
+
+ kdialog --msgbox "$check_name
${_context[$check_name]}"
+
+ for subcheck in compressed uncompressed uncompressed-to-compressed
+ do
+ local subcheck_dir="$check_dir/$subcheck"
+ mkdir "$subcheck_dir" || return $result_err_setup
+
+ local add_rc="[General]\nuntaggedCategory=\nuntaggedTag=\n"
+ if [[ "$subcheck" == "uncompressed" ]]
+ then
+ add_rc="$add_rc\nuseCompressedIndexXML=false\n"
+ fi
+ echo -e "$add_rc$BASE_RC" > "$subcheck_dir/kphotoalbumrc" || return $result_err_setup
+
+ # prepare database:
+ cp "$data_dir/$subcheck.orig.xml" "$subcheck_dir/index.xml" || return $result_err_setup
+
+ export XDG_CONFIG_HOME="$subcheck_dir"
+ kphotoalbum --db "$subcheck_dir/index.xml" > "$subcheck_dir/log" 2>&1 || return $result_err_crash
+
+ if ! diff -u "$data_dir/$subcheck.result.xml" "$subcheck_dir/index.xml"
+ then
+ return $result_failed
+ fi
+ done
+ return $result_ok
+}