Check digit
If the check digit needs to be a digit (0-9), here is one solution:
You could take the SHA256 hash of the character string, modulo 10, and use that as your check digit. The advantage is that this has good properties on average, and takes into account all characters.
Arguably, a possible disadvantage is that it is not guaranteed to detect all single-digit errors and all transpositions; those are only detected with probability 9/10. (Some other checksum algorithms for digits achieve the latter guarantee, but they don't work with alphabet characters. Moreover, there is no hope or possibility of achieving both of those guarantees when you have to deal with alphabetic characters: it's not possible to guarantee detection of either kind of error when you have alphabetic characters and a check digit that is restricted to 0-9.) Therefore, I'm not sure it is possible to do much better than this.
Check character
If the check digit can be anything from the character set, here is an alternative solution:
Suppose there are $n$ characters, so each character can be thought of as a number in the range $0,1,2,\dots,n-1$. Let the characters in the string be $x_1,x_2,\dots,x_k$. Then you can use the following as the check sum:
$$x_1 + 2x_2 + 3x_3 + \dots + kx_k \bmod n.$$
If $n$ is prime, this has the following nice guarantee: any one-character error will be detected (e.g., cooking
-> cooling
), and any transposition of two characters will be detected (e.g., weird
-> wierd
) (unless the transposed characters are a multiple of $n$ positions apart).
If $n$ is not prime, you get weaker properties, but it's still a reasonable checksum.
Alternatively, you can use the SHA256 hash of the character string, modulo $n$, as the check sum. That has no guarantees but is good on average.