Character encoding issues at column names with version 12

mcemberci's profile image mcemberci posted 2 years ago in General Permalink

As depicted in the images, the column names with turkish character displays correctly on Heidisql 11 but not in version 12. It shows a question mark at the character position.

2 attachment(s):
  • heidisql11
  • heidisql12
ansgar's profile image ansgar posted 2 years ago Permalink

You should update to the latest build, and try the two library options libmysql.dll and libmariadb.dll in your session.

Long story can be read here.

mcemberci's profile image mcemberci posted 2 years ago Permalink

Hi again, as you said when I selected the libmysql.dll or libmysql6-1.dll problem solved, but I couldn't understand why version 11 works perfectly with libmaria.dll.

Thank you

ansgar's profile image ansgar posted 2 years ago Permalink

Because in v11.3, HeidiSQL forced the connection's character set to be utf8mb4, while v12.0 only does that if the connection has a non-utf* character set. I found out some servers seem to report utf8 charset although the character_set_client variable is latin1 (or latin2, or whatever). Your server seems to be one of those.

Perhaps you can post your server version, and the charset settings from the server's my.ini/my.cnf?

mcemberci's profile image mcemberci posted 2 years ago Permalink

Is this attachment enough ?

1 attachment(s):
  • libmariadb
ansgar's profile image ansgar posted 2 years ago Permalink

No, that just shows the final character sets, interpreted and changed through lib*.dll and HeidiSQL 11 (or 12). What I need to reproduce is the character set settings from my.ini/my.cnf

mcemberci's profile image mcemberci posted 2 years ago Permalink
# MySQL/MariaDB default is Latin1, but in Debian we rather default to the full
# utf8 4-byte character set. See also client.cnf
#
character-set-server  = utf8mb4
collation-server      = utf8mb4_general_ci

mysql Ver 15.1 Distrib 10.3.34-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

ansgar's profile image ansgar posted 2 years ago Permalink

I copied your my.ini settings to mine from a MariaDB 10.3.12 installation, and still

  • libmariadb/mysql_character_set_name detects utf8mb4 at startup
  • libmysql/mysql_character_set_name detects latin1 so HeidiSQL forces utf8mb4

Did you perhaps not update the dlls in your HeidiSQL directory? Probably you just updated the main executable heidisql.exe?

mcemberci's profile image mcemberci posted 2 years ago Permalink

I made a mistake, I reported wrong servers version. Actually it should be as follows.

mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

There is no character set definitions in my.cnf file. Whole file is as follows, and there is no other file for configuring this mysql server.

[root@webservers ~]# cat /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

max_allowed_packet=32M
#log=/var/log/mysql/mysql.log
log-error=/var/log/mysql/mysql-error.log
ft_min_word_len = 2

# turning on event_scheduler
event_scheduler=ON

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[root@webservers ~]# mysql -V

mysql  Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

So, I understand that, if you use an old server you must use libmysql.dll. Thank you.

ansgar's profile image ansgar posted 2 years ago Permalink

Thanks a lot. I'll try to analyze that with a v5.1 MySQL server.

ansgar's profile image ansgar posted 2 years ago Permalink

v5.1 servers seem to cause a wrong charset name. Next HeidiSQL build explicitly sets utf8 on such old servers.

Please login to leave a reply, or register at first.