I have a Drupal 8 (8.2.5) setup on a Debian Jessie Server
PHP 7.0.15-1~dotdeb+8.1 and MySQL
5.5.54. All of a sudden Drupal converted all special characters like
ü,ä,ö,ß,–... into question marks like
Das mu?? doch nicht sein.
At first I thought, this must be a problem with a false encoding in the HTML header, but the encoding of the page is: UTF-8. Then I realized, that in the database all those characters are really 'converted' to question marks. As I have on the same server many Drupal instances (v. 6, 7 and 8) running, the which never had shown such behavior, I don't think, it is an issue with the server setup. The MySQL logs did not show anything referring to this issue neither.
After restoring the Data base, the same issue occurred again after some days.
I have absolutely no clue, what is going on. Has anybody an idea what could be the cause of this problem?
UPDATE: This problem is getting more wired: It turned out, as soon as I clear the cache, all special characters are gone. A look into the database (with PHPMyAdmin) shows, they really are. When I then restore a former database version, all special characters are shown on the site correctly again, but in the database they are still shown as questions marks. My first guess was: They are already »converted« in the database dumb I was using, but only correct in the cache table. But, when restore the database and directly edit an affected node, all special characters are correctly shown in the form field. After saving it, they are correct even in the database. So I could restore all special characters by bulk republish them from the
/admin/content interface. Also it turns out that not only special character in node fields are gone, but also in path alias and taxonomy terms. For example: Where »ä« should be converted to »ae« within a path alias, it was turned to a »?«.
Let me demonstrate this with some screen shots. The special character in this case was an en dash (–): This is how it looks like on the site, when the issue occurs, a question mark is shown where originally an en dash was:
PHPMyAdmin shows us in the next picture, that this en dash was really converted to an question mark:
Looking into the backups of my data base with a text editor show, that in there the special characters are not corrupted.
Uploading the database file with Mackup and Migrate or with
drush sql-cli < path/to/my/file/database.sql a look into the database shows, it gets corrupted immediately:
But on the site as long as I don't clear the cache all looks good. That means the cache table aren't corrupted. But surprisingly even if I edit an node, it is shown as if it weren't corrupted:
For a commoner like my that leads to the conclusion:
- Some how, if I edit a node, it's content is loaded from cache tables!
So my questions are:
- Which Drupal module or function could be responsible for touching all most every database entry, but not the cache tables?
- If I re-save a node or entity (without making any change), how is it possible, that the database entry of the affected fields change?