You can decompose your frame into numeric part and character part.
use caret dummyVars function to one hot encode the character part so that dist() can be applied to it.
Either recombine the dummyvars with the numerics and dist the whole set, or run dist twice and add the results (the latter demo'd below)
library(caret)
library(tidyverse)
a<-list("a","b",1,2,3,2) %>% as.data.frame() %>% set_names(LETTERS[1:6])
b<-list("a","b",3,2,3,4) %>% as.data.frame() %>% set_names(LETTERS[1:6])
c<-list("c","a",3,2,3,4) %>% as.data.frame() %>% set_names(LETTERS[1:6])
all_o <- rbind(a,b,c)
(all_o_cat <- select_if(all_o,is.character))
(dmy_cats_formula <- dummyVars(" ~ .", data = all_o_cat))
(dmy_cats <- data.frame(predict(dmy_cats_formula, newdata = all_o_cat)))
(cat_dists <- dist(dmy_cats) %>% as.numeric())
(all_o_num <- select_if(all_o,is.numeric))
(num_dists <- dist(all_o_num) %>% as.numeric())
(sum_dists <- num_dists+cat_dists)