Thread MySQL und utf8mb4 (27 answers)
Opened by rosti at 2023-06-14 18:04

GwenDragon
 2023-06-15 17:15
#195030 #195030
User since
2005-01-17
14603 Artikel
Admin1
[Homepage]
user image
Ich gebe es auf, selbst mit MySQL 8 ist nix so wie es erwünscht wäre.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@ute:~# mysql 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.33-0ubuntu0.22.04.2 (Ubuntu)

mysql> select c,hex(c),upper(c),hex(upper(c)) from t_utf8mb4_0900_ai_ci;

+------+--------+----------+---------------+
| c | hex(c) | upper(c) | hex(upper(c)) |
+------+--------+----------+---------------+
| ä | C3A4 | Ä | C384 |
| ß | C39F | ß | C39F |
+------+--------+----------+---------------+

2 rows in set (0,00 sec)


//edit: dasselbe mit utf8mb4_unicode_520_ci

Wozu dann noch mit Perls DBI und DBD::mysql testen.


utf8mb4 ist nur bedingt brauchbar mit MySQL. Leider muss eineR die Grenzen selbst testen, was geht und was nicht.
Also wie üblich fleißig "testcases" schreien und schreiben.


//EDIT2:
Nochmals upcase in diversen Sprachen getestet.

Python
Code: (dl )
1
2
3
4
5
Python 3.10.8 (tags/v3.10.8:aaaf517, Oct 11 2022, 16:50:30) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 'ß'.upper()
'SS'
>>>


PHP (extension mbstring ist geladen)
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
~ # php -v
PHP 7.4.33 (cli) (built: Nov 2 2022 16:00:55) ( ZTS Visual C++ 2017 x64 )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

~ # php -a
Interactive shell

php > print mb_strtoupper("äöüß");
ÄÖÜSS
php >


JavaScript
Code: (dl )
1
2
3
4
14:42:40.572 "ä".toLocaleUpperCase()
14:42:40.592 'Ä'
14:42:47.739 "ß".toLocaleUpperCase()
14:42:47.757 'SS'


Perl
Code: (dl )
1
2
Perl 5.32 # perl -MEncode -E "say Encode::encode_utf8(uc qq/äöüß/)";
ÄÖÜSS

Code: (dl )
1
2
Perl 5.12 # perl -MEncode -E "say Encode::encode_utf8(uc qq/äöüß/)";
ÄÖÜSS



Das versteh’ eine, warum MySQL das nicht korrekt tun will.
Werde aber zynisch lachen, wenn da eine "länderspezifische" utf8mb.... charset/collation genommen werden muss. Oder MySQLs utfmb4 ist veraltet. Ich weiß das nicht.
Last edited: 2023-06-16 16:05:35 +0200 (CEST)

View full thread MySQL und utf8mb4