diff --git a/fsck.c b/fsck.c
index 918bf9a3186..b49113bf0eb 100644
--- a/fsck.c
+++ b/fsck.c
@@ -6,6 +6,7 @@
 #include "commit.h"
 #include "tag.h"
 #include "fsck.h"
+#include "utf8.h"
 
 static int fsck_walk_tree(struct tree *tree, fsck_walk_func walk, void *data)
 {
@@ -175,7 +176,7 @@ static int fsck_tree(struct tree *item, int strict, fsck_error error_func)
 			has_dot = 1;
 		if (!strcmp(name, ".."))
 			has_dotdot = 1;
-		if (!strcasecmp(name, ".git"))
+		if (!strcasecmp(name, ".git") || is_hfs_dotgit(name))
 			has_dotgit = 1;
 		has_zero_pad |= *(char *)desc.buffer == '0';
 		update_tree_entry(&desc);
diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh
index 04387125530..8158b98e6f9 100755
--- a/t/t1450-fsck.sh
+++ b/t/t1450-fsck.sh
@@ -237,9 +237,10 @@ test_expect_success 'fsck notices submodule entry pointing to null sha1' '
 	)
 '
 
-while read name path; do
+while read name path pretty; do
 	while read mode type; do
-		test_expect_success "fsck notices $path as $type" '
+		: ${pretty:=$path}
+		test_expect_success "fsck notices $pretty as $type" '
 		(
 			git init $name-$type &&
 			cd $name-$type &&
@@ -259,11 +260,12 @@ while read name path; do
 	100644 blob
 	040000 tree
 	EOF
-done <<-\EOF
+done <<-EOF
 dot .
 dotdot ..
 dotgit .git
 dotgit-case .GIT
+dotgit-unicode .gI${u200c}T .gI{u200c}T
 EOF
 
 test_done