Thu Oct 1 18:09:25 EEST 2009

How to fix problems with encoding not showing umlauts in after import of sql data to MySQL

I'm restoring some websites from backups this days. One of the swiss websites had a serious problem
with umlauts not showing up. This happened right after I've used an old dump from a MySQL Server
running version 4.x, the imported data was to MySQL server version 5. The problem consisted in that
everywhere an umault was placed the shown content was
 ü
. You can imagine how
annoying and ugly that looked, the whole text was crappy. After some googling with a help
of one of my colleagues (a programmer). I was pointed to this nice article
Mysql Latin1 Utf8 Conversion . What happens is that for some reason the dump I've made had latin1 character-set even though the
data inside was in utf8. Thus importing the dump would try to import the data as latin1 and make
a crap out of it.

The fix is as simple as substituting latin8 to utf8 in your mysql dump file and then reimporting it again
.
In my case the browser displayed by default the website characters in iso8859 instead of utf8, so I had
to specificly to change the browser encoding to UTF8 to realize all is okay. Then it was necessery to
modify all the templates to use UTF8 instead of the wrong character encoding. I have no clue
how does it happened that the same umlaut encoding on the old server, what I suspect is there
was something with the Apache's default character encoding probably I have it set there by default
set to utf8. Well so far so good, let's see how much trashy stuff I have to deal with today.