I've been working on this issue for a few days now. Honestly just going for a 'sounding-board' type method here to see if anyone's comments spur an idea.
I have inherited a project with the idea of redesigning and upgrading as time goes on. Everything is going fairly swell except for German text rendering. In my local machine I can edit components that have been created with RTE's in their dialog that are sling:resourceSuperType from the Text v2 Core Component and successfully save and render German umaluts (ä ö ü...).
When installing the code to a Stage environment, these same components render the umlauts as ?'s. Now, I checked the JCR nodes and they do in fact still save the authored content with the correct umlauts. There appears to be something happening between retrieving from the JCR and rendering on the page. Keep in mind that the Stage environment is a pretty bare environment. I would have thought it to be exactly identical to my local AEM environment but it appears not.
Another weird behavior...we also have a Development AEM environment and when I install the code there, the umlauts DO render correctly. It appears to only be the Stage where I have an issue. I have referenced content packages, bundles, OSGI configs to attempt to find a difference between these environments with no luck.
I did perform Language Translation for Language Copies on the Stage environment but I'm 99% sure I performed that action locally also.
To summarize, I believe I have 3 identical environments with identical code and one of them is not rendering umlauts correctly while all of them properly save the umlauts to the JCR.