You might check if "ls" sorts in this same odd fashion. It might be a locale setting - if LC_COLLATE is set to your actual locale, it text will be sorted as if were natural language (i.e., prose), rather than sorting in the usual "technical" manner. This means that some kinds of characters (number, punctuation, maybe other things?) will just be ignored when sorting, which makes the order look like nonsense.
"ls" sorts right, like it should.
The usual means to handle this is to set LC_COLLATE=C in /etc/locale.conf and make sure nothing in your environment (.bashrc, Thunar config) overrides it. Check your environment variables (in a terminal) and look at the output of "locale".
This is not because of locale. I typed LC_COLLATE=C in /etc/locale.conf and nothing changed. Thunar ignores LC_COLLATE.