diff --git a/share/qtcreator/dumper/dumper.py b/share/qtcreator/dumper/dumper.py
index 98b93a39d12b4819be1fda4933a3017199a1be94..5a43b347e2c23c84bda9beeea5fac1fe16922de7 100644
--- a/share/qtcreator/dumper/dumper.py
+++ b/share/qtcreator/dumper/dumper.py
@@ -1689,6 +1689,8 @@ class Dumper:
 
             nsStrippedType = self.stripNamespaceFromType(dtypeName)\
                 .replace("::", "__")
+            # The following line is only needed for D:
+            #nsStrippedType = nsStrippedType.replace(" ", "__")
             #warn(" STRIPPED: %s" % nsStrippedType)
             #warn(" DUMPERS: %s" % (nsStrippedType in qqDumpers))
             if nsStrippedType in qqDumpers:
diff --git a/share/qtcreator/dumper/qttypes.py b/share/qtcreator/dumper/qttypes.py
index 7c76b412211fbd8091efce5b168bb38b41c90b8f..b216ce33d07a72359dd8416b034b1c4bb7b34f1d 100644
--- a/share/qtcreator/dumper/qttypes.py
+++ b/share/qtcreator/dumper/qttypes.py
@@ -2373,6 +2373,37 @@ def qdump__Eigen__Matrix(d, value):
                         s = s + 1
 
 
+#######################################################################
+#
+# D
+#
+#######################################################################
+
+
+def qdump___Array_char(d, value):
+    n = value["length"]
+    p = value["ptr"]
+    d.putAddress(value.address)
+    d.putType("char[%d]" % n)
+    d.putValue(encodeCharArray(p, 100), Hex2EncodedLocal8Bit)
+    d.putNumChild(0)
+
+# DMD v2.058 encodes string[] as _Array_uns long long. With spaces.
+def qdump___Array_uns__long__long(d, value):
+    n = value["length"]
+    p = value["ptr"]
+    d.putAddress(value.address)
+    d.putType("string[%d]" % n)
+    d.putValue(" ")
+    d.putNumChild(n)
+    innerType = p.type
+    if d.isExpanded():
+        with Children(d, n, childType=innerType):
+            for i in range(0, n):
+                d.putSubItem(i, p.dereference())
+                p = p + 1
+
+
 #######################################################################
 #
 # Display Test