yeah -3 ?1?2 can be a little bit confusing, just try it for yourself
hashcat -a 3 -1 12 -2 34 -3 ?1?2 --stdout --increment ?3?3
will result in
1
2
3
4
12
22
32
42
11
21
31
41
14
24
34
44
13
23
33
43
so -3 is just -1 and -2 combined but not in the "human" manner as on char/group but on content
for the file, when using --hex-charset, and due to the fact, that hashcat works byte by byte, the given file is splitted by bytes, so it results in c2, c3, ... and so on, so every needed byte-sequenz needs just to presented once
c3a4c3b6 (äö) is just the same like
c3a4b6 (it is just a manual cleanup of the doubled c3, i think hashcat will do the same on the fly)
EDIT:
another misunderstanding, when trying to crack for example the german ä (c3a4) with the given charfile above, the minimum mask has to be ?3?3 because ä is two bytes long, so a single ?3 wont crack this (this applies to all other language with utf8-chars), see the hex for €, there the mask has to be minimum ?3?3?3
hashcat -a 3 -1 12 -2 34 -3 ?1?2 --stdout --increment ?3?3
will result in
1
2
3
4
12
22
32
42
11
21
31
41
14
24
34
44
13
23
33
43
so -3 is just -1 and -2 combined but not in the "human" manner as on char/group but on content
for the file, when using --hex-charset, and due to the fact, that hashcat works byte by byte, the given file is splitted by bytes, so it results in c2, c3, ... and so on, so every needed byte-sequenz needs just to presented once
c3a4c3b6 (äö) is just the same like
c3a4b6 (it is just a manual cleanup of the doubled c3, i think hashcat will do the same on the fly)
EDIT:
another misunderstanding, when trying to crack for example the german ä (c3a4) with the given charfile above, the minimum mask has to be ?3?3 because ä is two bytes long, so a single ?3 wont crack this (this applies to all other language with utf8-chars), see the hex for €, there the mask has to be minimum ?3?3?3