One issue is that the website doesn't specify a character set in its response, so Facebook must guess a character set, usually assuming ANSI which can lead to unknown characters being displayed as question marks. Depending on the language used, there are different implementations to address this. You can search for instructions by googling "HTTP header charset language". Your HTTP header should resemble:
Content-Type: text/html; charset=utf-8
For example, in PHP, you would simply add:
header('Content-Type: text/html; charset=utf-8');
This tells Facebook that the charset is UTF-8 and prevents Japanese characters from being converted into question marks. W3 provides code examples here.
I have personally tested this solution and confirmed that when I included this header in my file, Facebook correctly displayed the Japanese characters.
Based on your note that the URL crawlers use , it's apparent why Facebook interprets the characters as question marks—they display as such on the actual page as well. This indicates that the issue resides on your server rather than within Facebook's processing of the content.
The probable problem now is that while your server states the content-type as UTF-8, the actual content-type may still be ASCII, leading to modifications of Japanese characters on the server side.
To resolve this, ensure that all files on your server are saved in UTF-8 encoding. In the future, consider setting the default character encoding to UTF-8 (instructions for Notepad++ here, and for Sublime Text here; or look up guidance for your specific text editor). For now, manually adjust the character encoding or explore automated solutions through online searches.
I came across this SO question discussing automated charencoding conversion. You might also look into the Notepad++ / Python approach here. By searching with your preferred language ("Convert files to UTF-8 Python"), you can find resources like those available for Python or Java.