CP/M only formally understands 7-bit characters (0-127)
There are implementations of CP/M which will allow input and output of 8-bit characters, where the meaning of a character (i.e. its display representation) is dependant on the character set selected in the PC terminal software. There are several defined "common usages" to handle characters in several non English languages.
For implementations of CP/M with memory-mapped displays (e.g. AmstradPCW) there are character roms which set the mapping for characters in the upper half of the ASCII set.
Wordstar can be configured to handle 8-bit characters for use in foreign language environments but it is necessary for the author and readers to ensure consistency in their character set mappings. As Alan mentioned the VT series terminals do make some definitions which can be used for consistency but there is no enforcement.
The 8-bit characters can be valid within the data of files but file naming and directory entries under CP/M are constrained to a subset of upper case characters (i.e. the lower half of the set). To handle international characters in file names it is necessary to redefine the US-ASCII set to mean something different for a few unused characters, to interpret them as the required special characters. This has to be common across your users, and map through to terminal software and printers. I am sure the internet has some examples.
You can see the limitation of characters in the filenames by occasionally seeing NAME.CoM instead of
NAME.COM where a directory attribute (like SYS, R/W etc) has been set, and if referred to as an 8 bit character by the application will show as a lower case character.
The default CP/M implementations strip the top bit in character handling BIOS routines, but this can be adjusted by BIOS patch to enable serial transfer of 8 bit characters.
I hope these notes give you a better understanding.
Richard