SD directory naming rules

Hey, I want to create some directories that represent dates, for example “11.03.24” but it seems like the SD.mkdir() function return false whenever I use special characters in my path. Strangely enough, the SD succeeds to make the directories that have only 1 special character in their naming like “@/fasdaf/”.
It is allowed to use special characters in the SD library?

#include <RTClib.h>
#include <SPI.h>
#include <SD.h>

File myFile;
void setup() {

  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.print("Initializing SD card...");
  
  if (!SD.begin(8)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

if(SD.mkdir("vdfa/3143#2123/fasfd")){ // added '#' and not working, without it the making is succesfull
    Serial.println("Succesfully created directory");
    }
 if(SD.mkdir("!")){
    Serial.println("Succesfully created directory1");
    }
    if(SD.mkdir("@")){
    Serial.println("Succesfully created directory2");
    }
    if(SD.mkdir("#")){
    Serial.println("Succesfully created directory3");
    }
    if(SD.mkdir("$")){
    Serial.println("Succesfully created directory4");
    }
    if(SD.mkdir("%")){
    Serial.println("Succesfully created directory5");
    }
    if(SD.mkdir("^")){
    Serial.println("Succesfully created directory6");
    }
    if(SD.mkdir("&")){
    Serial.println("Succesfully created directory7");
    }
    if(SD.mkdir("*")){
    Serial.println("Succesfully created directory8");
    }

  void loop(){

}

It shows “Succesfully crreated directory” on 1, 2, 3, 4, 5, 7 but not on the first one.

If that card is read by a PC.. Stick to standard: https://en.wikipedia.org/wiki/8.3_filename